把二叉树打印成多行
题目描述:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
问题分析:
和上面这道题结合起来,其实对于BFS,主要在于如何对同一个层级的节点数据进行展开,循环 就是一个利器,通过对该层节点的循环完成展开
代码展示:
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function Print(pRoot)
{
// 和之前的 从上到下打印二叉树 结合起来,对每行的结点施加循环,存每行数据到temp中,push到res中
if(pRoot == null)
return [];
var queue = []; //存储节点,删除节点
var res = []; //存储节点的值,return
queue.push(pRoot);
while (queue.length){
let len = queue.length;
let temp = [];
for(let i=0;i<len;i++)
{
var node = queue.shift();//返回arr数组中的第一个元素
temp.push(node.val); //将节点的值放入res中,return
if (node.left){ //左儿子
queue.push(node.left);
}
if (node.right){ //右儿子
queue.push(node.right);
}
}
res.push(temp); //把每行的数据存起来
}
return res;
}