LeetCode做题总结 226. 翻转二叉树

226. 翻转二叉树

  • [代码1 报错](#代码1 报错)
  • [代码2 报错](#代码2 报错)
  • [代码3 正确。](#代码3 正确。)

代码1 报错

java 复制代码
class Solution {
    public TreeNode invertTree(TreeNode root) {
        // TreeNode _root = root; // 这是在保证
        // _root = preOrderTree(root);
        // return root;
        root = preOrderTree(root);
        return root;
    }

    public TreeNode preOrderTree(TreeNode root) {
        if(root == null) return root;
        swapNode(root.left, root.right);
        preOrderTree(root.left);
        preOrderTree(root.right);
        return root;
    }

    public void swapNode(TreeNode left, TreeNode right) {
        TreeNode tmp = left;
        left = right;
        right = tmp;
    }
}

是错的

代码2 报错

java 复制代码
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null) return root;
        swapNode(root.left, root.right);
        invertTree(root.left);
        invertTree(root.right);
        return root;
    }

    public void swapNode(TreeNode left, TreeNode right) {
        TreeNode tmp = left;
        left = right;
        right = tmp;
    }
}

还是错的

代码3 正确。

代码3和代码1、2的区别在swap函数上。
想不通

在各大平台问了一下,终于明白了。
分析: 在 Java 中,参数是按值传递的,而不是按引用传递的。我的swapNode函数,只交换了临时变量的值(引用),返回后,原本的树中结点值不变。
在这个修改后的版本中,swapNode 函数只接受一个参数 root,并直接在这个节点上交换左右子树的值。这样就能正确地实现二叉树翻转的功能。

java 复制代码
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null) return root;
        swapNode(root);
        invertTree(root.left);
        invertTree(root.right);
        return root;
    }

    public void swapNode(TreeNode root) {
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
    }
}

这样是对的

相关推荐
满天星83035774 分钟前
定长内存池ObjectPool
数据结构·c++·算法·链表
叼烟扛炮7 分钟前
C++第八讲:string 类
开发语言·c++·算法·string
Chase_______15 分钟前
LeetCode 1493 & 3634 题解:滑动窗口双指针,从“删一个元素的全1子数组“到“最少移除使数组平衡“
算法·leetcode
悲伤小伞27 分钟前
LeetCode 热题 100_4-283. 移动零
算法·leetcode·职场和发展
星 海32 分钟前
网络芯片对IP地址最长前缀匹配算法的实现
网络·算法
OYangxf34 分钟前
力扣hot100【滑动窗口】
算法·leetcode·职场和发展
CQU_JIAKE43 分钟前
5.7【A】
算法
2zcode44 分钟前
基于SVM与HOG算法的行人检测系统设计与实现
算法·机器学习·支持向量机
MATLAB代码顾问1 小时前
MATLAB实现粒子群算法优化PID参数
开发语言·算法·matlab
翎沣1 小时前
C++11异常处理机制
java·c++·算法