本文共 1047 字,大约阅读时间需要 3 分钟。
20210112
难度简单728
翻转一棵二叉树。
示例:
输入:
4 / \ 2 7 / \ / \1 3 6 9输出:
4 / \ 7 2 / \ / \9 6 3 1备注:
这个问题是受到 的 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。通过次数177,719提交次数228,420
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode invertTree(TreeNode root) { //todo 核心:一直让自己的左右子树互换,直到叶子结点(没有左右子树了); //递归出口条件:左右子树为null了,即叶子结点; if (root == null) { return null; //这里是递归出口:在这里返回了,不再进行下边的转换和递归操作了。 } //TreeNode leftTree=root.left; //左子树; (这样赋值,后边再转换,会无法完成转换,不知为何) //TreeNode rightTree=root.right; //右子树;(这样赋值,后边再转换,会无法完成转换,不知为何) //互换: TreeNode temp = root.right; root.right = root.left; root.left = temp; //递归 invertTree(root.right); invertTree(root.left); return root; } }
转载地址:http://dytzi.baihongyu.com/