zoukankan      html  css  js  c++  java
  • 树的子结构

    解题思路

      对于树的子结构,首先注意空树不是任何树的子结构,所以我们要先解决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 }
  • 相关阅读:
    Cheatsheet: 2010 05.25 ~ 05.31
    Cheatsheet: 2010 07.01 ~ 07.08
    Cheatsheet: 2010 07.22 ~ 07.31
    Cheatsheet: 2010 06.01 ~ 06.07
    Cheatsheet: 2010 05.11 ~ 05.17
    Cheatsheet: 2010 06.08 ~ 06.15
    Cheatsheet: 2010 06.16 ~ 06.22
    Cheatsheet: 2010 06.23 ~ 06.30
    2020.7.20第十五天
    2020.7.19第十四天
  • 原文地址:https://www.cnblogs.com/wanglinyu/p/8525654.html
Copyright © 2011-2022 走看看