翻转二叉树

题目要求

翻转一棵二叉树。

示例:

输入:

    4
  /   \
  2     7
 / \   / \
1   3 6   9

输出:

   4
 /   \
 7     2
/ \   / \
9   6 3   1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题目有一个十分有趣的小故事。mac上家喻户晓的软件homebrew的开发者去参加Google的面试,却不能写出翻转二叉树这道题目,被谷歌拒绝了。原话如下:

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

递归法

树的结构如下:

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int val) {
        this.val = val;
    }
}

翻转一棵空树的结果还是一棵空树(作为迭代出口),利用迭代让其root.left和root.right互换即可完成这道题目。

public class Solution {
    public TreeNode invertTree(TreeNode root) {
        if (root == null) return null;
        TreeNode left = invertTree(root.left);
        TreeNode right = invertTree(root.right);
        root.left = right;
        root.right = left;
        return root;
    }
}

这道题目并没有难度,只要做出这道题你就能超过世界大牛,问鼎代码之巅。


   转载规则


《翻转二叉树》 cyyyys 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
叶子相似的树 叶子相似的树
题目要求请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 ![屏幕快照 2019-08-30 上午10.48.39](/Users/congyuyang/Pictures/博客图片/屏幕快照 2019-0
2019-08-30
下一篇 
求解二叉树的最大深度和判断是否是平衡二叉树 求解二叉树的最大深度和判断是否是平衡二叉树
求解二叉树的最大深度题目要求给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 /
2019-08-28
  目录