题目要求
翻转一棵二叉树。
示例:
输入:
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;
}
}
这道题目并没有难度,只要做出这道题你就能超过世界大牛,问鼎代码之巅。