PHP實(shí)現(xiàn)按之字形順序打印二叉樹的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)按之字形順序打印二叉樹的方法。分享給大家供大家參考,具體如下:
問題
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù)按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。
解決思路
使用兩個(gè)棧
實(shí)現(xiàn)代碼
<?php /*class TreeNode{ var $val; var $left = NULL; var $right = NULL; function __construct($val){ $this->val = $val; } }*/ function MyPrint($pRoot) { if($pRoot == NULL) return []; $current = 0; $next = 1; $stack[0] = array(); $stack[1] = array(); $resultQueue = array(); array_push($stack[0], $pRoot); $i = 0; $result = array(); $result[0]= array(); while(!empty($stack[0]) || !empty($stack[1])){ $node = array_pop($stack[$current]); array_push($result[$i], $node->val); //var_dump($resultQueue);echo "</br>"; if($current == 0){ if($node->left != NULL) array_push($stack[$next], $node->left); if($node->right != NULL) array_push($stack[$next], $node->right); }else{ if($node->right != NULL) array_push($stack[$next], $node->right); if($node->left != NULL) array_push($stack[$next], $node->left); } if(empty($stack[$current])){ $current = 1-$current; $next = 1-$next; if(!empty($stack[0]) || !empty($stack[1])){ $i++; $result[$i] = array(); } } } return $result; }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP排序二叉樹基本功能實(shí)現(xiàn)方法示例
- PHP實(shí)現(xiàn)二叉樹深度優(yōu)先遍歷(前序、中序、后序)和廣度優(yōu)先遍歷(層次)實(shí)例詳解
- PHP實(shí)現(xiàn)從上往下打印二叉樹的方法
- PHP獲取二叉樹鏡像的方法
- PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP實(shí)現(xiàn)判斷二叉樹是否對(duì)稱的方法
- PHP實(shí)現(xiàn)繪制二叉樹圖形顯示功能詳解【包括二叉搜索樹、平衡樹及紅黑樹】
- PHP完全二叉樹定義與實(shí)現(xiàn)方法示例
- php實(shí)現(xiàn)二叉樹中和為某一值的路徑方法
相關(guān)文章
提高define性能的php擴(kuò)展hidef的安裝和使用
在apache啟動(dòng)前,PHP啟動(dòng)時(shí)創(chuàng)建并初始化了這些常量,這樣就不需要在php里define常量了,性能自然沒有任何問題了!2011-06-06PHP實(shí)現(xiàn)多進(jìn)程并行操作的詳解(可做守護(hù)進(jìn)程)
本篇文章是對(duì)PHP實(shí)現(xiàn)多進(jìn)程并行操作進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php代碼審計(jì)之ThinkPHP5的文件包含漏洞詳解
這篇文章主要介紹了php代碼審計(jì)之ThinkPHP5的文件包含漏洞,較為詳細(xì)的分析了thinkphp5文件包含漏洞的形成原因與危害,需要的朋友可以參考下2023-06-06PHP進(jìn)行批量任務(wù)處理不超時(shí)的解決方法
這篇文章主要介紹了PHP進(jìn)行批量任務(wù)處理不超時(shí)的解決方法,結(jié)合實(shí)例形式簡單分析了php結(jié)合ajax進(jìn)行異步處理實(shí)現(xiàn)批量任務(wù)不超時(shí)的相關(guān)技巧,需要的朋友可以參考下2016-07-07