题解 | #把二叉树打印成多行#

把二叉树打印成多行

http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288

function Print(pRoot)
{
// write code here
let res=[]
if(pRoot===null) return res;
let queue=[]
let last=pRoot,nLast=null;
queue.push(pRoot)
let temp=[]
while(queue.length){
//node类似移动指针,在该行内移动 作为实例依次遍历和比较 Last是当前行的最右节点 nLast总是下一行的最右节点
let node=queue.shift()
temp.push(node.val)
if(node.left){
queue.push(node.left)
nLast=node.left
}
if(node.right){
queue.push(node.right)
nLast=node.right
}
//如果到了本层的最右,就把这一层结果放入。注意最后一层时,isempty不成立,
//最后一层的结果要单独放入。
if(node===last&&queue.length){
res.push([...temp])
last=nLast
temp=[]
}
}
//temp还存储着最后一行的信息,所以跳出while后还需要再push一次。三点运算符真香 yyds
res.push([...temp])
return res
}

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务