给定BST
和BST
中的节点,将该节点作为树的新根。但是在将此节点设置为root之后仍然将树维护为BST
。
我尝试如下: 以给定节点为根,如果它在原始根的左侧,则将原始根作为其右子,并将原始根的子节点作为新根的左子节点(类似地,如果新根位于原始根的右侧)。现在,有两种情况:
答案 0 :(得分:0)
对于案例2,您需要按照here
所述执行树旋转答案 1 :(得分:0)
在一般情况下,您的算法需要以子树旋转的形式执行一系列树操作(如@ Quicky的答案中所述)。
算法应如下所示:
答案 2 :(得分:0)
这是我能想到的算法
将新节点内容与当前根节点进行比较。
2.1。如果它更大,那么将当前节点作为它的左子项,否则为右子项
2.2同时根据条件1将当前根节点的另一个子节点作为新节点的子节点
此处删除节点是算法
在http://quiz.geeksforgeeks.org/binary-search-tree-set-2-delete/
更好地解释了删除节点的问题