题解 | #树的子结构#

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        //这个函数是指当前root1的根与root2的根
        //找到root1里的根节点与root2相同的值
        if (root1==null||root2==null){
            return false;
        }
        if (root1.val==root2.val&&(helper(root1.left,root2.left))&&(helper(root1.right,root2.right))){
            //当前这个根就是相同的,看各自左右是否能对应
            return true;
        }else {
            //如果不对应,换根
            return HasSubtree(root1.left,root2)||HasSubtree(root1.right,root2);
        }
    }
    public boolean helper(TreeNode root1,TreeNode root2){
        //判断两个数是否是相同的
        //注意!!!判断空的顺序非常重要
        if (root2==null){
            return true;
        }
        if (root1==null) {
            return false;
        }
        if (root1.val==root2.val){
            return helper(root1.left,root2.left)&&helper(root1.right,root2.right);
        }else {
            return false;
        }

    }

}

先找A中的根与B根对应 然后在看对应的左右子树是否对应
在判断左右子树是否对应当中要注意 先判断b是否为空 如果b为空那么一定是子节点 因为上一层已经判断了根是相同了的

在helper中如果进来的节点值相同那么一次看左右对应的是不是相同的

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务