剑指 Offer 32 - II. 从上到下打印二叉树 II

方法一 利用队列层序遍历

因为打印的是二叉树,所以每一层的节点数目是可循的。且可以根据当前队列中数据的数量来判断该层需要打印多少次节点。

注意,循环中没有令root=root.left(root.right)的操作时,利用root的空与否作为循环条件存在风险。

 1 /**
 2  * Definition for a binary tree node.
 3  * function TreeNode(val) {
 4  *     this.val = val;
 5  *     this.left = this.right = null;
 6  * }
 7  */
 8 /**
 9  * @param {TreeNode} root
10  * @return {number[][]}
11  */
12 var levelOrder = function(root) {
13     if(!root) return [];
14     let queue = [], res = [];
15     queue.push(root);
16     while(queue.length != 0) {
17         let temp = [];
18         for(let i = queue.length - 1; i >= 0; i--) {
19             root = queue.shift();
20             //console.log(queue.length);
21             //console.log(root);
22             if(root) {
23                 if(root.left) {
24                     queue.push(root.left);
25                 }
26                 if(root.right) {
27                     queue.push(root.right);
28                 }
29                 temp.push(root.val);
30             }
31         }
32         //console.log(temp);
33         res.push(temp);
34     }
35     return res;
36 };

 

posted @ 2021-09-10 13:43  雪之下。  阅读(40)  评论(0)    收藏  举报