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获取网站域名和地址的代码
Aug 17 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
php 文件上传实例代码
Apr 19 PHP
探讨如何把session存入数据库
Jun 07 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 PHP
TP5多入口设置实例讲解
Dec 15 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
php自动注册登录验证机制实现代码
2011/12/20 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python如何生成树形图案
2018/01/03 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
python实现抽奖小程序
2020/04/15 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python的Lambda函数用法详解
2019/09/03 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python已协程方式处理任务实现过程
2019/12/27 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
幼师自我鉴定
2014/02/01 职场文书
爽歪歪广告词
2014/03/20 职场文书
法人授权委托书格式
2014/04/08 职场文书
投资合作协议书范本
2014/04/17 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
环卫处个人工作总结
2015/03/04 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
生日寿星公答谢词
2015/09/29 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers