BST的递归

时间:2013-12-26 16:31:13

标签: recursion binary-search-tree

这两个递归代码有什么区别?目的是翻转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 个答案:

答案 0 :(得分:0)

假设有一棵树

        1
     2     3
   4   5  
 6

如果你在第1部分之前调用第2部分,则第2个将与3,4交换,5和6交换为NULL(4的右子) 但如果你在第1部分之后调用第2部分,那么前6个将与NULL交换,然后4与5交换,然后2与3交换。 这意味着它们创建镜像的顺序(顺序)只有差异。

相关问题