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 };
  • 相关阅读:
    【每日英语】
    【百宝箱】CLion: Cound not load cache
    C# WPF:这次把文件拖出去!
    C# WPF:快把文件从桌面拖进我的窗体来!
    两个List< string>比较是否相同的N种方法,你用过哪种?
    分享套接字数据包序列化与反序列化方法
    如何从含有占位符的字符串生成一个ReactNode数组
    vscode 插件配置指北
    第十一周总结
    机场&代理商-关系图
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9061864.html
Copyright © 2011-2022 走看看