题目
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
题解
利用队列先进先出的特点就可以完成。
代码
<?php
/*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
function MyPrint($pRoot)
{
if($pRoot == NULL)
return [];
$queueNode = array();
$re = array();
$count = 0;
$nextCount =1;
array_push($queueNode, $pRoot);
$i = 0;
$re[$i] = array();
while(!empty($queueNode)){
$count++;
$node = array_shift($queueNode);
array_push($re[$i], $node->val);
if($node->left !=NULL)
array_push($queueNode, $node->left);
if($node->right != NULL)
array_push($queueNode, $node->right);
if($count == $nextCount){
$count =0;
$nextCount=count($queueNode);
if(!empty($queueNode)){
$i++;
$re[$i] = array();
}
}
}
return $re;
}