先用乙個陣列表示乙個二叉樹搜尋樹,也就是乙個排好序的二叉樹,其中左子結點《根結點《右子結點
利用結構陣列的形式來表示,id , left , right 代表結點id ,左子樹 ,右子樹
下面這個二維陣列
$data=['id'=>8,'left'=>2,'right'=>10,'data'=>'test'];$data=['id'=>2,'left'=>1,'right'=>0,'data'=>'test1'];
$data=['id'=>10,'left'=>0,'right'=>0,'data'=>'test2'];
$data=['id'=>1,'left'=>0,'right'=>0,'data'=>'test3'];
轉換成成多維的樹結構
$root=8;$tree=;
//遍歷
foreach($data
as$k=>$v)//
遍歷2foreach($data
as$k=>$v)//
遍歷3foreach($data
as$k=>$v
)}
結果是:
array( [id] => 8[left] => array
( [id] => 2[left] => array
( [id] => 1[left] =>[right] =>[data] =>test3
)[right] =>[data] =>test1
)[right] => array
( [id] => 10[left] =>[right] =>[data] =>test2
)[data] =>test
)
使用迭代的方式來查詢,如果值比當前結點小,就把左子樹賦給當前樹 ,如果大就把右子樹賦給當前樹
function find($tree,$id)elseif($id>$tree['id'])
else
}return
false
;}
結果是:
$r=find($tree,2);array
( [id] => 2[left] => array
( [id] => 1[left] =>[right] =>[data] =>test3
)[right] =>[data] =>test1
)
PHP遍歷二叉樹
遍歷二叉樹,這個相對比較複雜。二叉樹的便利,主要有兩種,一種是廣度優先遍歷,一種是深度優先遍歷。什麼是廣度優先遍歷?就是根節點進入,水平一行一行的便利。什麼是深度優先遍歷呢?就是根節點進入,然後按照乙個固定的規律,一直向下走,乙個方向的子樹遍歷之後再遍歷另乙個方向的子樹。深度優先遍歷,主要有三種順序...
php之二叉樹,php如何實現的二叉樹遍歷 示例
php如何實現的二叉樹遍歷 示例 建立的二叉樹如下圖所示 php 如下所示 class node public value public child left public child right final class ergodic 前序遍歷 先訪問根節點,再遍歷左子樹,最後遍歷右子樹 並且在遍...
PHP實現完全二叉樹
若設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。php 實現 暫時實現新增節點 層次遍歷節點,刪除節點後續更新 class node 找到空節點 function findempytnode node,pa...