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

    题目描述

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     
    要查找树A 是否存再和树B一样的子树,我们可以分为2步:
    1 遍历树A 找到与B根节点相同的节点R
    2 判断以R为根节点 构成的树 与树B是否相同,递归的去做,先判断根节点是否相同,再判断左右节点是否相同,终止条件是,R或B遍历到叶子节点。
     
     1 public class Solution {
     2     public boolean HasSubtree(TreeNode root1,TreeNode root2) {
     3         boolean res =false;
     4         if(root1!=null && root2!=null){//边界条件
     5         if(root1.val==root2.val)
     6             //判断子树是否相同
     7             res = Tree1HaveTree2(root1,root2);
     8         if(!res)
     9             res = HasSubtree(root1.left, root2);
    10         if(!res)
    11             res = HasSubtree(root1.right, root2);
    12         }
    13         return res;
    14     
    15     }
    16     private boolean Tree1HaveTree2(TreeNode root1,TreeNode root2){、
    17         //边界条件
    18         if(root2==null) return true;//树B已经遍历完,说明B是A的子树
    19         if(root1==null) return false;//如果A遍历完了,B没遍历完,肯定不是子树
    20 
    21         if(root1.val!= root2.val) return false;//根节点不同 更不是了
    22         return Tree1HaveTree2(root1.left,root2.left) &&Tree1HaveTree2(root1.right,root2.right);
    23     }
    24 }
  • 相关阅读:
    PHP面向对象
    PHP正则表达式
    PHP数组
    PHP常用函数
    PHP自定义函数与字符串处理
    PHP函数
    PHP语句
    WAMP环境配置
    Bootstrap输入框组
    Bootstrap按钮组嵌套、垂直排列、两端对齐
  • 原文地址:https://www.cnblogs.com/zle1992/p/8029895.html
Copyright © 2011-2022 走看看