题目描述:
翻转一棵二叉树。
示例:
输入:1
2
3
4
5 4
/ \
2 7
/ \ / \
1 3 6 9
输出:1
2
3
4
5 4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
- 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
链接:
https://leetcode-cn.com/problems/invert-binary-tree
题目分析
非常经典的递归问题。递归遍历二叉树并将它们的左右子树交换即可。
1 | class Solution { |
时间复杂度:$O(n)$,其中 $n$ 是二叉树的结点数。我们对二叉树进行了一次遍历。
空间复杂度:$O(n)$,其中 $n$ 是二叉树的结点数。取决于递归栈的深度,在最坏的情况下二叉树是一条链,深度会达到 $n$,最好情况下是平衡二叉树,深度为 $\log n$。