PHP语言打印二叉树形状,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(!empty($stack[0]) || !empty($stack[1])){

$node = array_pop($stack[$current]);

array_push($result[$i], $node->val);

//var_dump($resultQueue);echo "";

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;

}

您可能感兴趣的文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值