跃迁引擎

空気を読んだ雨降らないでよ

iOS Research & Development


翻转二叉树

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

题目

翻转一棵二叉树。

示例:

输入:

 4

/
2 7
/ \ /
1 3 6 9
输出:

 4

/
7 2
/ \ /
9 6 3 1

这就是 Max Howell 大神当年面试谷歌没写出的那道翻转二叉树

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

题解

这道题的思路和之前写过的这道 二叉树的镜像 如出一辙,就不再赘述了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 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) {
if (root == null) {
return null;
}
// 递归遍历左右子树, 最终从底部向上逐步翻转整个二叉树
invertTree(root.left);
invertTree(root.right);

// 左右节点交换
TreeNode tmp = root.left;
root.left = root.right;
root.right = tmp;

return root;
}
}
最近的文章

合并二叉树

LeetCode 617 合并二叉树 …

, , 开始阅读
更早的文章

为 ReactiveCocoa 提供可独立区分延迟执行和间隔执行时间的定时器扩展

为 RAC 定时器提供一个可独立区分延迟执行和间隔执行时间的定时器扩展 …

, , , , 开始阅读
comments powered by Disqus