PHP構(gòu)造二叉樹算法示例
樹(Tree)在數(shù)據(jù)結(jié)構(gòu)還是很重要的,這里表示二叉樹用括號(hào)表示法表示。先寫一個(gè)二叉樹節(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;
}
}
}
這里寫上一個(gè)打印二叉樹的函數(shù)(中序遍歷):
function PrintBTNode($node)
{
if($node != NULL) {
PrintBTNode($node->lchild);
echo $node->data;
PrintBTNode($node->rchild);
}
}
運(yùn)行結(jié)果:
輸入一個(gè)字符串
"A(B(C,D),G(F))"

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(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)判斷二叉樹是否對(duì)稱的方法
- PHP實(shí)現(xiàn)二叉樹深度優(yōu)先遍歷(前序、中序、后序)和廣度優(yōu)先遍歷(層次)實(shí)例詳解
- PHP排序二叉樹基本功能實(shí)現(xiàn)方法示例
相關(guān)文章
php post json參數(shù)的傳遞和接收處理方法
今天小編就為大家分享一篇php post json參數(shù)的傳遞和接收處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
ThinkPHP框架設(shè)計(jì)及擴(kuò)展詳解
本文詳細(xì)介紹了ThinkPHP框架的框架分層及url路由、ThinkPHP擴(kuò)展、數(shù)據(jù)庫驅(qū)動(dòng)擴(kuò)展、Behavior行為擴(kuò)展以及源碼分析與不足,講解的十分全面系統(tǒng),這里推薦給大家,有想學(xué)習(xí)ThinkPHP的小伙伴千萬不要錯(cuò)過。2014-11-11
CodeIgniter框架鉤子機(jī)制實(shí)現(xiàn)方法【hooks類】
這篇文章主要介紹了CodeIgniter框架鉤子機(jī)制實(shí)現(xiàn)方法,結(jié)合具體的hooks類文件描述了鉤子機(jī)制的原理與相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
php fckeditor 調(diào)用的函數(shù)
showfck() 編輯器調(diào)用函數(shù)2009-06-06
thinkphp實(shí)現(xiàn)發(fā)送郵件密碼找回功能實(shí)例
這篇文章主要介紹了thinkphp實(shí)現(xiàn)發(fā)送郵件密碼找回功能的方法,以實(shí)例形式詳細(xì)講述了配置文件與功能代碼的實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12

