PHP構(gòu)造二叉樹算法示例
樹(Tree)在數(shù)據(jù)結(jié)構(gòu)還是很重要的,這里表示二叉樹用括號表示法表示。先寫一個二叉樹節(jié)點(diǎn)類:
// 二叉樹節(jié)點(diǎn) class BTNode { public $data; public $lchild = NULL; public $rchild = NULL; public function __construct($data) { $this->data = $data; } }
然后構(gòu)造二叉樹:
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; } } }
這里寫上一個打印二叉樹的函數(shù)(中序遍歷):
function PrintBTNode($node) { if($node != NULL) { PrintBTNode($node->lchild); echo $node->data; PrintBTNode($node->rchild); } }
運(yùn)行結(jié)果:
輸入一個字符串
"A(B(C,D),G(F))"
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- PHP Class&Object -- PHP 自排序二叉樹的深入解析
- PHP實(shí)現(xiàn)二叉樹的深度優(yōu)先與廣度優(yōu)先遍歷方法
- PHP實(shí)現(xiàn)的線索二叉樹及二叉樹遍歷方法詳解
- php實(shí)現(xiàn)的二叉樹遍歷算法示例
- PHP實(shí)現(xiàn)繪制二叉樹圖形顯示功能詳解【包括二叉搜索樹、平衡樹及紅黑樹】
- PHP實(shí)現(xiàn)從上往下打印二叉樹的方法
- PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP獲取二叉樹鏡像的方法
- PHP實(shí)現(xiàn)判斷二叉樹是否對稱的方法
- PHP實(shí)現(xiàn)二叉樹深度優(yōu)先遍歷(前序、中序、后序)和廣度優(yōu)先遍歷(層次)實(shí)例詳解
- PHP排序二叉樹基本功能實(shí)現(xiàn)方法示例
相關(guān)文章
PHP的foreach中使用引用時(shí)需要注意的一個問題和解決方法
這篇文章主要介紹了PHP的foreach中使用引用時(shí)需要注意的一個問題和解決方法,即數(shù)組最后一個元素的值會發(fā)生改變的情況,需要的朋友可以參考下2014-05-05php實(shí)現(xiàn)屏蔽掉黑帽SEO的搜索關(guān)鍵字
這篇文章主要介紹了php實(shí)現(xiàn)屏蔽掉黑帽SEO的搜索關(guān)鍵字的相關(guān)資料,這里推薦給大家,有需要的小伙伴可以參考下。2015-04-04PHP中使用memcache存儲session的三種配置方法
下面簡單說下PHP項(xiàng)目分布式部署中,SESSION的同步方案中的一種,使用Memcache來存儲SESSION。并總結(jié)了三種配置方式,需要的朋友可以參考下2014-04-04總結(jié)PHP如何獲取當(dāng)前主機(jī)、域名、網(wǎng)址、路徑、端口和參數(shù)等
這篇文章給大家分享了利用php如何獲取當(dāng)前域名或主機(jī)地址、網(wǎng)頁地址、網(wǎng)址參數(shù)、用戶代理、完整的url、包含端口號的完整url以及只取路徑等信息,有需要的朋友們可以參考借鑒。2016-09-09php在程序中將網(wǎng)頁生成word文檔并提供下載的代碼
在php程序文件中生成內(nèi)容到word文檔中并提供下載功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-10-10TP5框架實(shí)現(xiàn)一次選擇多張圖片并預(yù)覽的方法示例
這篇文章主要介紹了TP5框架實(shí)現(xiàn)一次選擇多張圖片并預(yù)覽的方法,結(jié)合實(shí)例形式詳細(xì)分析了thinkPHP5基于ajax數(shù)據(jù)提交上傳多張圖片與本地預(yù)覽相關(guān)操作技巧,需要的朋友可以參考下2020-04-04php微信公眾號開發(fā)(2)百度BAE搭建和數(shù)據(jù)庫使用
這篇文章主要介紹了php微信公眾號開發(fā)第二課,百度BAE搭建和數(shù)據(jù)庫使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12