题解 | #树的子结构#

树的子结构

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中如果进来的节点值相同那么一次看左右对应的是不是相同的

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务