背景描述
Homebrew 是 OS X 平台上的包管理工具。用其官网的话说就是:
the missing package manager for OS X | OS X 平台遗失的包管理器。
相信在用 Mac 的程序员,差不多都知道 Homebrew。
Homebrew 的开发者是 Max Howell。今天 Max 在推特发帖:
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
谷歌:虽然我们 90% 工程师都在用你写的软件(Homebrew),但你不能在白板上反转二叉树,所以滚蛋。
这条推在开发者圈内引发热议。有网友认为,谷歌该改改面试流程了。
##
## 所以我把这道题自己做出来了,感觉很有成就感 ##
题目描述:
Invert a binary tree.
4
/ \
2 7
/ \ / \
1 3 6 9
to
4
/ \
7 2
/ \ / \
9 6 3 1
Trivia:
This problem was inspired by this original tweet by Max Howell:
Google: 90% of our engineers use the software you
wrote (Homebrew), but you can’t invert a binary
tree on a whiteboard so fuck off.
思路分析:
相这种算法题目,我的思路是尽量用递归解决,因为二叉树本身就是一个递归的结构,同时注意判断空值判断,以及返回值
代码:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
public class Solution {
public TreeNode invertTree(TreeNode root) {
if (root != null) {
TreeNode tmp = null;
tmp = root.right;
root.right = root.left;
root.left = tmp;
invertTree(root.left);
invertTree(root.right);
return root;
}
return null;
}
}