這篇文章主要介紹PHP實作建構二元樹演算法的方法,有興趣的朋友參考下,希望對大家有幫助。
樹(Tree)在資料結構還是很重要的,這裡表示二元樹用括號表示法表示。先寫一個二元樹節點類別:
// 二叉树节点 class BTNode { public $data; public $lchild = NULL; public $rchild = NULL; public function __construct($data) { $this->data = $data; } }
然後建構二叉樹:
function CreateBTNode(&$root,string $str) { $strArr = str_split($str); $stack = []; $p = NULL; // 指针 $top = -1; $k = $j = 0; $root = NULL; foreach ($strArr as $ch) { switch ($ch) { case '(': $top++; array_push($stack, $p); $k = 1; break; case ')': array_pop($stack); break; case ',': $k = 2; break; default: $p = new BTNode($ch); if($root == NULL) { $root = $p; } else { switch ($k) { case 1: end($stack)->lchild = $p; break; case 2: end($stack)->rchild = $p; break; } } break; } } }
這裡寫上一個列印二元樹的函數(中序遍歷):
function PrintBTNode($node) { if($node != NULL) { PrintBTNode($node->lchild); echo $node->data; PrintBTNode($node->rchild); } }
運行結果:
#輸入字串
"A(B(C,D),G(F))"
#以上就是本文的全部內容,希望對大家的學習有所幫助。
# #python實作的二元樹演算法與kmp演算法實例
#
以上是PHP實作建構二元樹演算法的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!