• 技术文章 >后端开发 >php教程

    PHP顺序打印二叉树的实现方法

    小云云小云云2018-01-16 16:36:53原创605
    本文主要介绍了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实现先序、中序及后序遍历二叉树操作实例

    PHP如何实现判断二叉树是否对称

    JavaScript实现二叉树的先序、中序及后序遍历方法

    以上就是PHP顺序打印二叉树的实现方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 方法 实现
    上一篇:PHP实现可添加水印与生成缩略图处理工具 下一篇:php nginx 实时输出实例讲解
    千万级数据并发解决方案

    相关文章推荐

    • 消息队列RabbitMQ入门与PHP实例详解• mysql-在Windows32进行自定义环境搭建测试PHP连接MySQL时总是提示Fatal error: Call to undefined function• Zend Framework入门知识点小结_php实例• CodeIgniter视图使用注意事项_php实例• PHP验证码生成原理和实现_php实例
    1/1

    PHP中文网