|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家?guī)淼膬热菔顷P于php如何實現二叉樹的子結構判斷(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 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 res
tree1HasTreeB(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)<?php
class TreeNode{
public $val;
public $left = NULL;
public $right = NULL;
public function __construct($val){
$this->val = $val;
}
}
//構造兩棵樹
$node1=new TreeNode(1);
$node2=new TreeNode(2);
$node3=new TreeNode(3);
$node4=new TreeNode(4);
$node5=new TreeNode(5);
$treeA=$node1;
$node1->left=$node2;
$node1->right=$node3;
$node3->left=$node4;
$node3->right=$node5;
//var_dump($treeA);
$node6=new TreeNode(3);
$node7=new TreeNode(4);
$node6->left=$node7;
$treeB=$node6;
//var_dump($treeB);
function HasSubtree($pRoot1,$pRoot2){
$res=false;
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中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!