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

这样是对的

相关推荐
AndrewHZ5 分钟前
【图像处理基石】如何用OpenCV入门计算机视觉?
图像处理·深度学习·opencv·算法·计算机视觉·机器视觉·cv
gihigo19989 小时前
matlab 基于瑞利衰落信道的误码率分析
算法
foxsen_xia9 小时前
go(基础06)——结构体取代类
开发语言·算法·golang
foxsen_xia9 小时前
go(基础08)——多态
算法·golang
leoufung9 小时前
用三色 DFS 拿下 Course Schedule(LeetCode 207)
算法·leetcode·深度优先
im_AMBER10 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
C雨后彩虹11 小时前
机器人活动区域
java·数据结构·算法·华为·面试
MarkHD11 小时前
车辆TBOX科普 第53次 三位一体智能车辆监控:电子围栏算法、驾驶行为分析与故障诊断逻辑深度解析
算法
苏小瀚11 小时前
[算法]---路径问题
数据结构·算法·leetcode
月明长歌12 小时前
【码道初阶】一道经典简单题:多数元素(LeetCode 169)|Boyer-Moore 投票算法详解
算法·leetcode·职场和发展