树的子结构

Posted 休眠体

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的子结构相关的知识,希望对你有一定的参考价值。

解题思路

  对于树的子结构,首先注意空树不是任何树的子结构,所以我们要先解决root1或者root2为空的情况,其次在root1中查看有没有root2的根节点,如果存在root2的根节点则比较两棵树是否相同

问题描述

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

代码实现

 1 /**
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6 
 7     public TreeNode(int val) {
 8         this.val = val;
 9     }
10 }
11 */
12 public class Solution {
13     public boolean HasSubtree(TreeNode root1,TreeNode root2) {
14         boolean flag = false;
15         if(root2 == null || root1 == null) return false;
16         if(root1.val == root2.val){
17             flag = DoseHastree(root1, root2);
18         }
19         if(flag == false){
20             flag = HasSubtree(root1.right, root2)||HasSubtree(root1.left, root2);
21         }
22         return flag;
23     }
24     public boolean DoseHastree(TreeNode root1, TreeNode root2){
25         if(root2 == null) return true; //如果root2先遍历完这说明为root1的子结构
26         if(root1 == null) return false;
27         if(root1.val == root2.val){
28             return DoseHastree(root1.left, root2.left)&&DoseHastree(root1.right, root2.right);
29         }
30         else{
31             return false;
32         }
33     }
34 }

 

以上是关于树的子结构的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段5——HTML元素结构

《剑指Offer——树的子结构》代码

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

代码的鲁棒性:树的子结构

数据结构中二叉树的顺序存储结构代码怎么编写?

高质量代码-树的子结构