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;
    }
}

这样是对的

相关推荐
花开富贵ii1 小时前
代码随想录算法训练营四十三天|图论part01
java·数据结构·算法·深度优先·图论
weixin_307779131 小时前
AWS Lambda解压缩S3 ZIP文件流程
python·算法·云计算·aws
code小毛孩2 小时前
leetcode hot100数组:缺失的第一个正数
数据结构·算法·leetcode
legendary_bruce8 小时前
【22-决策树】
算法·决策树·机器学习
max50060010 小时前
基于桥梁三维模型的无人机检测路径规划系统设计与实现
前端·javascript·python·算法·无人机·easyui
快去睡觉~12 小时前
力扣400:第N位数字
数据结构·算法·leetcode
qqxhb13 小时前
零基础数据结构与算法——第七章:算法实践与工程应用-搜索引擎
算法·搜索引擎·tf-idf·倒排索引·pagerank·算法库
gzzeason14 小时前
LeetCode Hot100:递归穿透值传递问题
算法·leetcode·职场和发展
汤永红14 小时前
week1-[循环嵌套]画正方形
数据结构·c++·算法
pusue_the_sun14 小时前
数据结构——顺序表&&单链表oj详解
c语言·数据结构·算法·链表·顺序表