[LeetCode][JavaScript]Binary Tree Level Order Traversal

Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

 

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]
https://leetcode.com/problems/binary-tree-level-order-traversal/
 
 
 
 

 
 
 
按层遍历树,用一个队列记录当前层的节点,递归访问每一层。
 
 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     var res = [], queue = [root];
14     traversal();
15     return res;
16 
17     function traversal(){
18         var top, len = queue.length, subRes = [];
19         while(len--){
20             top = queue.shift();
21             if(top !== null && top.val !== undefined){
22                 subRes.push(top.val);
23                 queue.push(top.left);
24                 queue.push(top.right);
25             }
26         }
27         if(subRes.length > 0){
28             res.push(subRes);
29         }
30         if(queue.length > 0){
31             traversal();
32         }
33     }
34 };

 

 
 
 
 
 
 
 



posted @ 2015-11-01 12:12  `Liok  阅读(835)  评论(0编辑  收藏  举报