使用递归的java二叉搜索树遍历
我对使用递归和返回进行二叉搜索树遍历有疑问。我必须采取一个BST与键按升序排列,并“逆转”它,使所有的关键是在降序,因为你可以看到在图片中
根据我对以下代码的理解,我认为步骤如下:
->reverseKeys (10) ->reverseKeys (2)
->reverseKeys (null): return
->reversekeys(null): return
->BSTNODE <T> ptr = root.left;
->root.left = root.right;
->root.right = ptr;
我想我误解了代码。有人能解释一下这个代码是如何从左到右改变图片的吗?我将感谢任何帮助
25 25
/ \ / \
10 40 ---> 40 10
/\ /\ / \ / \
2 20 30 45 45 30 20 2
/ \ / \
15 35 35 15
public static <T extends Comparable<T>>
void reverseKeys(BSTNode<T> root) {
if (root == null) {
return;
}
reverseKeys(root.left);
reverseKeys(root.right);
BSTNode<T> ptr = root.left;
root.left = root.right;
root.right = ptr;
}
# 1 楼答案
这些行只是为节点交换左、右子树。由于对该方法的递归调用,在执行该方法时,每个节点都交换了左子树和右子树
# 2 楼答案
检查以下代码的BST-反向顺序遍历(RVL)