合并两个树
预设条件
- 接收两个BST返回一个BST
- 左子树的最大值小于右子树的最小值
- 返回一个排序好的BST
1 | JoinTrees(t1,t2): |
从BST中删除节点
-
如果BST为空:删不了
-
如果没有子树:待删节点本身就是叶子节点,直接删就可以
-
如果只有一边的子树:用唯一的子树替换待删节点即可
-
两棵子树:
-
版本1:当成合并两棵子树处理
-
版本2:将当前节点的右孩子置为新的root,将左孩子交给右子树的最小节点接管
-
仅展示版本2的代码
1 | // delete an item from a Tree |
右旋
1 | rotateRight(n1): |
左旋
1 | rotateLeft(n1): |