PHP实现按之字形顺序打印二叉树的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-08-30 17:33:11 浏览: 评论:0
这篇文章主要介绍了PHP实现按之字形顺序打印二叉树的方法,涉及php结合栈遍历二叉树的相关操作技巧,需要的朋友可以参考下。
本文实例讲述了PHP实现按之字形顺序打印二叉树的方法,分享给大家供大家参考,具体如下:
问题
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解决思路
使用两个栈
实现代码:
- <?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(!emptyempty($stack[0]) || !emptyempty($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(emptyempty($stack[$current])){
- $current = 1-$current;
- $next = 1-$next;
- if(!emptyempty($stack[0]) || !emptyempty($stack[1])){
- $i++;
- $result[$i] = array();
- }
- }
- }
- return $result;
- }
Tags: PHP字形顺序 PHP二叉树
- 上一篇:PHP实现找出链表中环的入口节点
- 下一篇:PHP获取二叉树镜像的方法
相关文章
- ·PHP实现二叉树的深度优先与广度优先遍历方法(2021-06-19)
- ·PHP实现判断二叉树是否对称的方法(2021-08-29)
- ·PHP实现从上往下打印二叉树的方法(2021-08-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)