Recursion BSTs的递归

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

这两个递归代码之间有什么区别?其目的是翻转BST(每个右和左子树都镜像),一个版本在向下时翻转,而另一个版本等待它到达底部,然后翻转。那么,除了翻转的顺序之外,在第1部分之前有第2部分有什么区别吗

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部分。 这意味着它们创建镜像的顺序(顺序)不同