题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
代码
思路:采用队列数据结构,同时需要两个变量分别存储这一层和下一层结点个数。当前层结点个数为零时,则输出结点
function Print(pRoot)
{
// write code here
var queue = [];//存储节点队列
var result = [];
if(pRoot==null) return result;
var nextLevel = 0;
queue.push(pRoot);
var toBePrinted = 1;//每一行节点个数
var arr = [];
while(queue.length){
var temp = queue.shift();
toBePrinted--;
arr.push(temp.val);
if(temp.left){
queue.push(temp.left);
nextLevel++;
}
if(temp.right){
queue.push(temp.right);
nextLevel++;
}
if(toBePrinted==0){
toBePrinted=nextLevel;
nextLevel=0;
result.push(arr);
arr = [];
}
}
return result;
}