Description
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
1 | 1 |
But the following [1,2,2,null,3,null,3]
is not:
1 | 1 |
Note:
Bonus points if you could solve it both recursively and iteratively.
分析
如果一个树是镜像树,那么这颗树有如下特点,
- 左子树的 left-root-right 遍历和右子树的 right-root-left 遍历结果一致
- 左子树的左节点和右子树的右节点值相等,并且左子树的左子树是右子树的右子树的镜像
- 左子树的右节点和右子树的左节点值相等,并且左子树的右子树是右子树的左子树的镜像
根据第 1 条特点可以写出非递归算法,根据 2、3 两条可以写出递归算法。
递归写法
根据分析得出的 2、3 特性,代码实现如下;
1 | /** |
提交后,得分不高,运行时打败 31%。
非递归解法
未完,待续…