zoukankan      html  css  js  c++  java
  • php实现判断树的子结构

    php实现判断树的子结构

    一、总结

     很简单的递归判断

    二、php实现判断树的子结构

    题目描述:

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

    三、代码

    代码一:php ac

     1 <?php
     2  
     3 /*class TreeNode{
     4     var $val;
     5     var $left = NULL;
     6     var $right = NULL;
     7     function __construct($val){
     8         $this->val = $val;
     9     }
    10 }*/
    11 function HasSubtree($pRoot1, $pRoot2)
    12 {
    13     // write code here
    14     if($pRoot1 == NULL || $pRoot2 == NULL){ //1、空值判断
    15         return false;
    16     }
    17     return isSubtree($pRoot1, $pRoot2) ||
    18         HasSubtree($pRoot1->left, $pRoot2) || HasSubtree($pRoot1->right, $pRoot2);
    19 }
    20  
    21 function isSubtree($pRoot1, $pRoot2){
    22     if( $pRoot2 == NULL){
    23         return true;
    24     }
    25     if($pRoot1 == NULL){
    26         return false;
    27     }
    28     return $pRoot1->val == $pRoot2->val && isSubtree($pRoot1->left, $pRoot2->left) && isSubtree($pRoot1->right, $pRoot2->right); //2、递归判断
    29 }

    代码二:

    利用好短路特性,完全不用那么多flag

     1 class Solution {
     2     bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) {
     3         if (pRootB == NULL) return true;
     4         if (pRootA == NULL) return false;
     5         if (pRootB->val == pRootA->val) {
     6             return isSubtree(pRootA->left, pRootB->left)
     7                 && isSubtree(pRootA->right, pRootB->right);
     8         } else return false;
     9     }
    10 public:
    11     bool HasSubtree(TreeNode* pRootA, TreeNode* pRootB)
    12     {
    13         if (pRootA == NULL || pRootB == NULL) return false;
    14         return isSubtree(pRootA, pRootB) ||
    15             HasSubtree(pRootA->left, pRootB) ||
    16             HasSubtree(pRootA->right, pRootB);
    17     }
    18 };
  • 相关阅读:
    GetBuffer与ReleaseBuffer的用法,CString剖析
    Mysql 关闭自动提交
    Mysql 创建用户和数据库
    老爸陪我去面试——北漂18年(3)
    Java中的“&”和“&&”的区别
    Java常量定义
    利用Java API生成50到100之间的随机数
    Java考查“==”和equals
    列出JDK中常用的Java包
    cognos 配置
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9061864.html
Copyright © 2011-2022 走看看