PHP实现按之字形顺序打印二叉树的方法


Posted in PHP onJanuary 16, 2018

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
谈谈PHP语法(2)
Oct 09 PHP
第四节--构造函数和析构函数
Nov 16 PHP
php 生成文字png图片的代码
Apr 17 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
php笔记之:AOP的应用
Apr 24 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 #PHP
PHP实现找出链表中环的入口节点
Jan 16 #PHP
详解thinkphp中的volist标签
Jan 15 #PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 #PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 #PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 #PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 #PHP
You might like
php flv视频时间获取函数
2010/06/29 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
CentOS6.5设置Django开发环境
2016/10/13 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Django的CVB实例详解
2020/02/10 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
python 操作excel表格的方法
2020/12/05 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
博士生入学考试推荐信
2013/11/17 职场文书
学生会离职感言
2014/02/11 职场文书
制作部班长职位说明书
2014/02/26 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
初一年级组工作总结
2015/08/12 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫