对称的二叉树

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?tpId=13&&tqId=11211&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

这个题目还是比较有意思的,想了两个必要条件:

  1. 中序遍历的结果是回文的(对称的)
  2. 层序遍历的每一层是对称的

应该可以通过一些案例,但是不是充分必要条件,最后看了一下题解,代码非常少,还是很巧妙的。

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);
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务