为了账号安全,请及时绑定邮箱和手机立即绑定

剑指offer

标签:
面试

         

/** * 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) * @author user * 思路:参考剑指offer1、首先设置标志位result = false, * 因为一旦匹配成功result就设为true,剩下的代码不会执行, * 如果匹配不成功,默认返回false2、递归思想,如果根节点 * 相同则递归调用DoesTree1HaveTree2(),如果根节点不相 * 同,则判断tree1的左子树和tree2是否相同,再判断右子树和 * tree2是否相同3、注意null的条件,HasSubTree中,如果两 * 棵树都不为空才进行判断,DoesTree1HasTree2中,如果Tree2 * 为空,则说明第二棵树遍历完了,即匹配成功,tree1为空有两种 * 情况(1)如果tree1为空&&tree2不为空说明不匹配,(2)如果 * tree1为空,tree2为空,说明匹配。 */ public class ch17 {    public boolean HasSubtree(TreeNode root1,TreeNode root2) {        boolean result = false;            if(root1 != null && root2 != null){                if(root1.val == root2.val){                    result = DoesTree1HaveTree2(root1,root2);                }                if(!result){result = HasSubtree(root1.left, root2);}                if(!result){result = HasSubtree(root1.right, root2);}            }            return result;    }    public boolean DoesTree1HaveTree2(TreeNode root1,TreeNode root2){            if(root1 == null && root2 != null) return false;            if(root2 == null) return true;            if(root1.val != root2.val) return false;            return DoesTree1HaveTree2(root1.left, root2.left) && DoesTree1HaveTree2(root1.right, root2.right);        }}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
87
获赞与收藏
467

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消