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 }
  • 相关阅读:
    浅谈系统调用与库函数
    由代码到可执行程序----浅谈程序的编译链接
    初识信号---进程间的交流
    内部排序总结之----选择类排序(选择、堆)
    僵死进程
    父子进程那些事儿
    fok函数
    面试-css样式
    面试-javascript知识
    面试--数据库
  • 原文地址:https://www.cnblogs.com/zle1992/p/8029895.html
Copyright © 2011-2022 走看看