PHP实现按之字形顺序打印二叉树的方法
作者:重口味AC 发布时间:2023-07-05 08:33:30
标签: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(!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;
}
希望本文所述对大家PHP程序设计有所帮助。
来源:http://blog.csdn.net/acingdreamer/article/details/70030480


猜你喜欢
- 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个
- 什么是 go-cachego-cache 是一个轻量级的基于内存的 K-V 储存组件,内部实现了一个线程安全的 map[strin
- 非Data Guard的补丁安装教程可参考《[Oracle] CPU/PSU补丁安装详细教程》,Data Guard需要Primary和St
- Python字典的key都可以是什么答一个对象能不能作为字典的key,就取决于其有没有__hash__方法。所以所有python自带类型中,
- mysql最常用的索引结构是btree(O(log(n))),但是总有一些情况下我们为了更好的性能希望能使用别的类型的索引。hash就是其中
- 1、在命令行里停止MySQL服务:net stop mysql2、修改mysql安装目录下的my,ini,将default-ch
- 前言我想大家都玩过诺基亚上面的贪吃蛇吧,本文将带你一步步用python语言实现一个snake小游戏。基本环境配置版本:Python3系统:W
- 在ASP中,FSO的意思是File System Object,即文件系统对象。
- 前言:我们常常想使用数组的方法,比如forEach,filter,又或者some等等来处理非数组的数据类型,那么在这些场景下,我们就需要将非
- 内容摘要:本文详细介绍了SQL Server导入导出数据的方法:(1)导出导入SQL Server里某个数据库,(2)导
- 1、先说恢复误删单元格的操作场景:不小心把某个cell给cut了,或者删除了单元格(前提不要关闭notebook窗口)。解决方法: 先按Es
- Python int() 函数描述int() 函数用于将一个字符串或数字转换为整型。语法以下是 int() 方法的语法:class int(
- 一.修改/etc/my.cnf文件default-character-set=utf8[mysqld]datadir= ar b/mysql
- 安装pillow(python的图形界面库)第一种方法在Dos界面输入pip install pillow(但是不知为何总是失败);搞了好几
- <SPAN style="FONT-SIZE: 14px"><!DOCTYPE html> &l
- 在使用tensorflow时常常会使用到tf.reduce_*这类的函数,在此对一些常见的函数进行汇总1.tf.reduce_sumtf.r
- 主键表的主键(primary key,主关键字)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。一个表不能有多个主关键字,并且
- 基本概念上一节提到,代码完成的标准之一还包含了单元测试,这部分也是很多开发流程中不规范的地方。写过单元测试的开发人员应该理解,单元测试最核心
- 一.局部变量、全局变量1.什么是局部变量作用范围在函数内部,在函数外部无法使用2.什么是全局变量在函数内部和外部均可使用3.如何将函数内定义
- 1.引言甘特图已经拥有 100 多年的历史,这种可视化图表对项目管理非常有用。Henry Gantt 为了分析已经完成的项目创建了甘特图,他