首页 > 其他 > 详细

剑指offer 17. 树的子结构

时间:2020-03-10 12:19:28      阅读:66      评论:0      收藏:0      [点我收藏+]

17. 树的子结构

题目描述

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

思考:

子树的意思是包含了一个结点,就得包含这个结点下的所有节点,一棵大小为n的二叉树有n个子树,就是分别以每个结点为根的子树。

子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。

 1 public class Solution {
 2     public boolean HasSubtree(TreeNode root1,TreeNode root2) {
 3        // 排序特殊情况
 4         if(root2 == null || root1 == null)
 5             return false;
 6         // 判断 root2 是否为 与 root1 同根的子结构,如果不是判断是否是其左右子树的子结构
 7         return judgeSubtree(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
 8     }
 9     
10     // 判断 root2 是否为 root1 同根的子结构
11     public boolean judgeSubtree(TreeNode root1, TreeNode root2){
12         // 只要root2 到达叶子结点即返回true
13         if(root2 == null)
14             return true;
15         // 如果 root1 先到达叶子结点返回 false
16         if(root1 == null)
17             return false;
18         // 如果两个结点值不相等,直接返回 false
19         if(root1.val != root2.val)
20             return false;
21         
22         // 判断左右子树是否相等
23         return judgeSubtree(root1.left, root2.left) && judgeSubtree(root1.right, root2.right);
24     }
25     
26     
27 }

 

另一棵树的子树

一个树是另一个树的子树 则

  • 要么这两个树相等
  • 要么这个树是左树的子树
  • 要么这个树hi右树的子树
 1 class Solution {
 2     public boolean isSubtree(TreeNode s, TreeNode t) {
 3         if(s == null || t == null)
 4         return false;
 5 
 6         return judgeSubtree(s, t) || isSubtree(s.left, t) || isSubtree(s.right, t);
 7             
 8     }
 9     public boolean judgeSubtree(TreeNode root1, TreeNode root2){
10         // 两个树必须同时到达叶子结点才返回 true
11         if(root1 == null && root2 == null)        // 唯一不同的地方
12             return true;
13         if(root1 == null || root2 == null){
14             return false;
15         }
16         // 如果结点值不相等,返回 false
17         if(root1.val != root2.val)
18             return false;
19         return judgeSubtree(root1.left, root2.left) && judgeSubtree(root1.right, root2.right);
20 
21     }
22 }

 

剑指offer 17. 树的子结构

原文:https://www.cnblogs.com/hi3254014978/p/12454894.html

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