首页 > 其他 > 详细

判断T2是否是T1的子树

时间:2014-08-22 22:32:39      阅读:412      评论:0      收藏:0      [点我收藏+]

基本模仿CC150上的思路,递归地在t1中寻找能与t2的根相同的节点,作为开始比较的开始点,然后递归的比较两个树是否相等。

 

boolean containsTree(TreeNode t1, TreeNode t2){
    if(t2==null)
        return true;
    
    return subTree(t1,t2);
}


boolean subTree(TreeNode t1, TreeNode t2){
    if(t1==null)
        return false;
    if(t1.val ==t2.val){
        if(matchTree(t1,t2))
            return true;
    }
    return subTree(t1.left,t2)||subTree(t1.right,t2);    
}


boolean matchTree(TreeNode t1, TreeNode t2){
    if(t1==null&&t2==null)
        return true;
    if(t1==null||t2==null)
        return false;
    
    if(t1.val!=t2.val)
        return false;
    
    return matchTree(t1.left,t2.left)&&matchTree(t1.right,t2.right);
}

 

判断T2是否是T1的子树

原文:http://www.cnblogs.com/jdflyfly/p/3930333.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!