这两个代码有什么区别,为什么版本2的swap()不起作用?

版本1:

public void Mirror(TreeNode root) {
if (root == null)
    return;
swap(root);
Mirror(root.left);
Mirror(root.right);}

private void swap(TreeNode root) {
TreeNode t = root.left;
root.left = root.right;
root.right = t;}

它可以产生一棵镜像树,之后是一棵镜像树

         8
       /  \
      6   10
     / \  / \
    5  7 9 11
    original tree

        8
       /  \
      10   6
     / \  / \
    11 9 7  5
   mirror tree

这两个代码有什么区别,为什么版本2的swap()不起作用?

版本2:

public class Solution {
public void Mirror(TreeNode root) {
    if (root == null ){
        return ;
    }
    swap(root.left,root.right);
    Mirror(root.left);
    Mirror(root.right);
}
private void swap(TreeNode left,TreeNode right) {
    TreeNode temp = left;
    left = right;
    right = temp;
}}

我认为version2可以和version1一样,但是没有用。版本1可以产生一个镜像树。 所以,问题出在什么地方,我感到有些困惑。如果您能提供帮助,非常感谢。

raypuppet 回答:这两个代码有什么区别,为什么版本2的swap()不起作用?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2964532.html

大家都在问