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

    1.题目

      输入两棵二叉树A和B,判断B是不是A的子结构。

    2.分析

      1)先对A树进行遍历,找到与B树的根结点值相同的结点R;

      2)判断A树中以R为根结点的子树是否包含B树一样的结构。

    3.测试用例

      1.功能测试(A、B为普通二叉树;B是或者不是A树的子结构)

      2.特殊测试(任意一个或者两个树的根结点为null;左斜树;右斜树)

    4.程序

     1 package first;
     2 
     3 public class SubstructureInTree {
     4     /*
     5      * 主程序,对每个结点遍历判断
     6      */
     7     public boolean hasSubtree(TreeNode root1,TreeNode root2) {
     8         if(root1==null || root2==null)
     9             return false;
    10         //上面几行可以直接写成:
    11         return doesTree1HasTree2(root1, root2)|| hasSubtree(root1.left, root2)
    12                 ||hasSubtree(root1.right, root2);
    13     }
    14 
    15     /*
    16      * 判断root结点开始的子树中各个结点是否相同
    17      */
    18     private boolean doesTree1HasTree2(TreeNode root1,TreeNode root2) {
    19         if(root2==null) return true;
    20         if(root1==null) return false;
    21         return equal(root1.val, root2.val) && doesTree1HasTree2(root1.left, root2.left) && doesTree1HasTree2(root1.right, root2.right);
    22     }
    23 
    24     /*
    25      * 判断两个浮点数是否相等
    26      */
    27     private boolean equal(double num1,double num2) {
    28         if(num1-num2<0.0000001 && num1-num2>-0.0000001 )
    29             return true;
    30         return false;
    31     }
    32 }
  • 相关阅读:
    Rails生成随机字符串及加解密
    rails generate model/resource/scaffold的区别
    Rails generate的时候不生成assets和test
    rails delegate机制
    React Router V4发布
    react中创建组件的三种方法
    fetch的用法
    Ruby中map, collect,each,select,reject,reduce的区别
    Sublime Theme
    CentOS 升级Python3.X和pip3
  • 原文地址:https://www.cnblogs.com/juncaoit/p/10495945.html
Copyright © 2011-2022 走看看