JZ60 把二叉树打印成多行[剑指offer]

题目



[中等、队列]

题解

解题思路:

  • 树的层次遍历+使用两个变量(a.记录当前行的节点数目 b.记录下一行的节点数目)
  • 每一行的节点都要放到一个数组内部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function Print(pRoot)
{
let res = []; //最终结果
let queue = [];// 层次遍历queue
let temprow = [];// 存放每一层的结点
if(!pRoot) return res;
queue.push(pRoot);
let nextLevel = 0;//下一层结点数
let nowLevel = 1;// 本层结点数

while(queue.length){
const node = queue.shift();
temprow.push(node.val);
nowLevel--;
if(node.left) {
nextLevel++;
queue.push(node.left);
}
if(node.right) {
nextLevel++;
queue.push(node.right);
}
if(nowLevel === 0){
res.push(temprow);
temprow = [];
nowLevel = nextLevel;
nextLevel = 0;
}

}
return res;
}
文章作者: qinwei
文章链接: https://qw-null.github.io/2021/09/01/二叉树打印成多行/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QW's Blog