PHP構造二叉樹算法示例
更新時間:2017年06月21日 10:58:31 作者:火蜥蜴
本篇文章主要介紹了PHP構造二叉樹算法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
樹(Tree)在數據結構還是很重要的,這里表示二叉樹用括號表示法表示。先寫一個二叉樹節(jié)點類:
// 二叉樹節(jié)點 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))"
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- PHP Class&Object -- PHP 自排序二叉樹的深入解析
- PHP實現(xiàn)二叉樹的深度優(yōu)先與廣度優(yōu)先遍歷方法
- PHP實現(xiàn)的線索二叉樹及二叉樹遍歷方法詳解
- php實現(xiàn)的二叉樹遍歷算法示例
- PHP實現(xiàn)繪制二叉樹圖形顯示功能詳解【包括二叉搜索樹、平衡樹及紅黑樹】
- PHP實現(xiàn)從上往下打印二叉樹的方法
- PHP基于非遞歸算法實現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP獲取二叉樹鏡像的方法
- PHP實現(xiàn)判斷二叉樹是否對稱的方法
- PHP實現(xiàn)二叉樹深度優(yōu)先遍歷(前序、中序、后序)和廣度優(yōu)先遍歷(層次)實例詳解
- PHP排序二叉樹基本功能實現(xiàn)方法示例
相關文章
PHP的foreach中使用引用時需要注意的一個問題和解決方法
這篇文章主要介紹了PHP的foreach中使用引用時需要注意的一個問題和解決方法,即數組最后一個元素的值會發(fā)生改變的情況,需要的朋友可以參考下2014-05-05PHP中使用memcache存儲session的三種配置方法
下面簡單說下PHP項目分布式部署中,SESSION的同步方案中的一種,使用Memcache來存儲SESSION。并總結了三種配置方式,需要的朋友可以參考下2014-04-04php微信公眾號開發(fā)(2)百度BAE搭建和數據庫使用
這篇文章主要介紹了php微信公眾號開發(fā)第二課,百度BAE搭建和數據庫使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12