剑指Offer中的一道题,树的子结构,请各位帮我看看

输入两颗二叉树A,B,判断B是不是A的子结构。
代码如下,我觉得没问题,编译结果就是不对,请帮我看看,哪个地方的问题
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        if(root1==null)
            return false;
        if(root2==null)
            return false;
        Queue<TreeNode> q1=new LinkedList<TreeNode>();
        TreeNode node=null;
        q1.add(root1);
        while(!q1.isEmpty()){
            node=q1.remove();
            if(node.left!=null)
                q1.add(node.left);
            if(node.right!=null)
                q1.add(node.right);
            if(node.val==root2.val){
                if(isSame(node,root2))
                    return true;             
            }              
        }
        return false;
    }
    private boolean isSame(TreeNode root1,TreeNode root2){
        if(root1==null&&root2==null)
            return true;
        else if(root1==null||root2==null){
            return false;
        }                 
        if(root1.val==root2.val)
             return isSame(root1.left,root2.left)&&isSame(root1.right,root2.right);
        return false;
       
    }
}

全部评论
判断子结构 不是判断子树
点赞 回复 分享
发布于 2016-04-21 18:12
楼主真厉害,居然猜中了百度的笔试题
点赞 回复 分享
发布于 2016-04-21 23:02
有些问题
点赞 回复 分享
发布于 2016-04-22 00:30
子结构并不是子树,而你求的是子树,还有一种情况没有考虑,树B有可能是树A的中间部分
点赞 回复 分享
发布于 2016-04-22 00:37

相关推荐

醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务