美文网首页
Leetcode-101 对称二叉树

Leetcode-101 对称二叉树

作者: 香瓜会飞 | 来源:发表于2020-07-19 10:56 被阅读0次
对称二叉树.png

由图中,我们可以看出来如果将二叉树由中间 按竖线进行对折得话,他对折重合得节点是值是相同得。
从此我们可以得知,只要判断他对折得点是否相同即可。

大家由图就可以看出一个节点有两个子节点。我们每次需要对比的,,以 2 为例 我需要判断当前节点的值是否相同。 每次判断完当前节点之后,还要判断他的两个子节点的情况。
代码如下:

public boolean isSymmetric(TreeNode root) {
        if(root == null ){
            return true;
        }
        return isBo(root.left , root.right);
    }
//TODO: 对比方法
public static  boolean isBo(TreeNode left,TreeNode right){
        if(left == null && right == null){
            return true;
        }
        if(left == null || right == null){
            return false;
        }
        if(left.val != right.val){
            return false;
        }
        return isBo(left.left, right.right) && isBo(left.right,right.left);
    }

从代码中我们可以看出,isBo中的 三个if 是判断当前两个对称节点是否相同。

return isBo(left.left, right.right) && isBo(left.right,right.left);

这段代码指的是子节点之间的比较。。就是当前节点判断完毕之后,他们的两个子节点在互相对比。 && 指的是 只有当前节点的两个子节点都相同之后才会返回 true ,依次递归。如果感觉图太浅显的,大家可以在多画几层子节点进行梳理。

对比.png

相关文章

网友评论

      本文标题:Leetcode-101 对称二叉树

      本文链接:https://www.haomeiwen.com/subject/rejekktx.html