剑指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

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务