这个题目还是比较有意思的,想了两个必要条件:
- 中序遍历的结果是回文的(对称的)
- 层序遍历的每一层是对称的
应该可以通过一些案例,但是不是充分必要条件,最后看了一下题解,代码非常少,还是很巧妙的。
public class Solution { public boolean isSymmetrical(TreeNode pRoot) { return isSame(pRoot, pRoot); } private boolean isSame(TreeNode r1, TreeNode r2) { if (r1 == null && r2 == null) return true; if (r1 == null || r2 == null) return false; return r1.val == r2.val && isSame(r1.left, r2.right) && isSame(r1.right, r2.left); } }