剑指offer-17-树的子结构

树的子结构

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

思路:

  • 递归

踩坑

本题测试用例较少,只要比较root1及其左右子树 就能ac

代码

能AC但是错误的代码

public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        if(root1==null || root2==null){
            return false;}
        //这里只比较了root,root.left,root.right
        return JudgeNode(root1,root2)||JudgeNode(root1.left,root2)||JudgeNode(root1.right,root2);         
        }
    public boolean JudgeNode(TreeNode Node1,TreeNode Node2){
        if(Node2==null){return true;}
        if(Node1==null){return false;} //包含了隐含条件 Node2!=null

        if(Node1.val==Node2.val){
            return JudgeNode(Node1.left,Node2.left) && JudgeNode(Node1.right,Node2.right);
            }else{return false;}
    }
}

正确的代码

public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        if(root2==null ||root1==null){return false;}
        if(root1.val==root2.val && judge(root1,root2)){
             return true;
        }else { //递归调用 判断子树是否与root相等
            return HasSubtree(root1.left,root2)||HasSubtree(root1.right,root2);
        }
    }

    public boolean judge(TreeNode root1,TreeNode root2){
        if(root2==null){return true;}
        if(root1==null){return false;}
        if(root1.val==root2.val){ 
                return judge(root1.left,root2.left) && judge(root1.right,root2.right);
        }else{
                return false;
             }
        }

}
剑指offer与数据结构 文章被收录于专栏

本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

好久没来牛客了,今天面试了一个实习生,感觉对方形象乱糟糟的,头发像鸡窝,像刚睡醒就来面试了,第一印象直接大打折扣,感觉我没有受到应有的尊重,再加上对方业务能力也一般,我直接挂掉;大家面试的时候还是好好收拾一下自己吧,争取给面试官留下个好印象,面试这东西还是存在眼缘的
MinJerous:更在乎本质,应该看候选人是否和岗位需要的能力匹配。洗脸/不洗头都无所谓吧,说不定人家刚刚通宵准备,就是为了这场面试呢?你挂掉他核心原因还是他能力不行,而不是形象。就算形象好点,能力不行你敢给过吗,不怕后面+1质疑你
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务