本篇讲解了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;
}
本篇讲解了php实现按之字形顺序打印二叉树的方法,更多相关知识请关注。
相关推荐:
php nginx 实时输出的实现方法
php实现找出链表中环的入口节点
php class soapclient not found处理方法
以上就是php实现按之字形顺序打印二叉树的方法的详细内容。