Recursion BSTs的递归
这两个递归代码之间有什么区别?其目的是翻转BST(每个右和左子树都镜像),一个版本在向下时翻转,而另一个版本等待它到达底部,然后翻转。那么,除了翻转的顺序之外,在第1部分之前有第2部分有什么区别吗Recursion BSTs的递归,recursion,binary-search-tree,Recursion,Binary Search Tree,这两个递归代码之间有什么区别?其目的是翻转BST(每个右和左子树都镜像),一个版本在向下时翻转,而另一个版本等待它到达底部,然后翻转。那么,除了翻转的顺序之外,在第1部分之前有第2部分有什么区别吗 private void mirror(Node node) { if (node == null) return; 1____________________________ // do the subtrees mirror(node.left); mirror(nod
private void mirror(Node node) {
if (node == null) return;
1____________________________
// do the subtrees
mirror(node.left);
mirror(node.right);
2_________________________________
// duplicate this node to its left
Node temp = node.left;
node.left = node.right;
node.right = temp;
}假设有一棵像树一样的树
1
2 3
4 5
6
如果在第1部分之前调用第2部分,那么前2部分将与3、4与5、6与NULL(4的右子项)交换
但是,如果在第1部分之后调用第2部分,那么前6部分将替换为NULL,然后4部分替换为5部分,然后2部分替换为3部分。
这意味着它们创建镜像的顺序(顺序)不同