【剑指offer】060-把二叉树打印成多行

题目

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路

利用两个队列,分别存放当前层的节点和下一层节点
当当前节点打印完之后,将下一层的节点队列next赋值给当前队列。如此循环

代码

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
/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Print (pRoot{
  // write code here
  if (!pRoot) return []
  let result = []
  let queue = []
  queue.push(pRoot)
  while (queue.length) {
    let line = []
    let next = []
    while (queue.length) {
      let item = queue.shift()
      line.push(item.val)
      if (item.left) next.push(item.left)
      if (item.right) next.push(item.right)
    }
    result.push(line)
    queue = next
  }
  return result
}
文章作者: ptp
文章链接: https://youyingjie114.github.io/2019/11/07/jz-offer/jz-offer-060/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 PTP'S BLOG