对称的二叉树
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?tpId=13&&tqId=11211&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
这个题目还是比较有意思的,想了两个必要条件:
- 中序遍历的结果是回文的(对称的)
- 层序遍历的每一层是对称的
应该可以通过一些案例,但是不是充分必要条件,最后看了一下题解,代码非常少,还是很巧妙的。
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); } }