[LeetCode][JavaScript]Binary Tree Level Order Traversal II

Binary Tree Level Order Traversal II

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

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

    3
   / \
  9  20
    /  \
   15   7

 

return its bottom-up level order traversal as:

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

 
 
 
与上一题一样的思路,区别就是最后加入结果的时候往前加。
 
 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 levelOrderBottom = 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.unshift(subRes);
29         }
30         if(queue.length > 0){
31             traversal();
32         }
33     }
34 };

 

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