PHP 使用PHP迭代表示二叉樹的查詢

2021-10-03 10:01:37 字數 1307 閱讀 5691

先用乙個陣列表示乙個二叉樹搜尋樹,也就是乙個排好序的二叉樹,其中左子結點《根結點《右子結點

利用結構陣列的形式來表示,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...