国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php如何實現二叉樹的子結構判斷(代碼)

2020-03-22 20:25:54
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于php如何實現二叉樹的子結構判斷(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)
1.子樹的意思是包含了一個節點,就得包含這個節點下的所有節點,兩棵樹同時到底
2.子結構可以是A樹的任意一部分
思路:
1.第一個遞歸:A和B兩棵樹,先在A中找到與B的根結點相同的點,如果A的根不是,那就遞歸A的左右子樹來找
2.第二個遞歸:從兩棵樹的根結點開始進行比較,遍歷的過程中,如果B樹為空,則返回true;如果B不為空,A為空,返回false
A樹的結點值與B樹的不同,返回false;
短路運算符 ,遞歸A的左子樹,B的左子樹;遞歸A的右子樹,B的右子樹

HasSubtree(treeA,treeB) if(treeA- val==treeB- val)//根結點相同 res=tree1HasTreeB(treeA.treeB) if !res res=HasSubtree(treeA- left.treeB)//第一層遍歷 if !res res=HasSubtree(treeA- right.treeB)//第一層遍歷 return restree1HasTreeB(treeA,treeB) //順序不能變 if treeB==null //B到底的時候,就是true return true if treeA==null return false//B沒到底,A到底了,就是false if treeA- val!=treeB- val //A和B的結點沒對上 return false //短路語法 ,如果前面的是false,直接返回false,后面不用走 return tree1HasTreeB(treeA- left,treeB- left) tree1HasTreeB(treeA- right,treeB- right)
 ?phphtml' target='_blank'>class TreeNode{ public $val; public $left = NULL; public $right = NULL; public function __construct($val){ $this- val = $val;
if($pRoot1==null || $pRoot2==null) return $res; if($pRoot1- val==$pRoot2- val) $res=tree1HasTree2($pRoot1,$pRoot2); if(!$res) $res=HasSubtree($pRoot1- left,$pRoot2); if(!$res) $res=HasSubtree($pRoot1- right,$pRoot2); return $res;function tree1HasTree2($treeA,$treeB){ if($treeB==null) return true; if($treeA==null) return false; if($treeA- val!=$treeB- val) return false; return tree1HasTree2($treeA- left,$treeB- left) tree1HasTree2($treeA- right,$treeB- right);var_dump(HasSubtree($treeA,$treeB));

以上就是php如何實現二叉樹的子結構判斷(代碼)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会同县| 鄢陵县| 延寿县| 和林格尔县| 迭部县| 南宁市| 漳浦县| 万州区| 宜君县| 库伦旗| 自治县| 苗栗县| 涞源县| 安徽省| 凤凰县| 宿松县| 万州区| 铁力市| 新宾| 萨迦县| 毕节市| 乐安县| 稷山县| 江津市| 思茅市| 翼城县| 河池市| 普兰县| 陆川县| 南昌市| 滦南县| 禹城市| 深圳市| 灵丘县| 阿瓦提县| 阜康市| 瓦房店市| 宜川县| 尼勒克县| 龙江县| 阳泉市|