leetcode-226-翻转二叉树

leetcode-226-翻转二叉树

难度:简单

problem

翻转一棵二叉树。

示例:

输入:

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

输出:

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

备注: 这个问题是受到Max Howell的原问题启发的

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

solution

递归

从root开始,每遇到一个节点就交换左右子树,再调用自身遍历左右子树。

code

递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
const invertTree = function(root) {
if (!root) return null;

[root.left, root.right] = [root.right, root.left];
invertTree(root.left);
invertTree(root.right);

return root;
}

评论