leetCode 107. Binary Tree Level Order Traversal II 二叉树层次遍历反转

简介:

107. 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,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7


return its bottom-up level order traversal as:

[
  [15,7],
  [9,20],
  [3]
]


解题思路:

此题与Binary Tree Level Order Traversal相似,只是最后的结果有一个反转。

参考 http://qiaopeng688.blog.51cto.com/3572484/1834819

代码如下:

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
33
34
35
36
37
38
39
40
41
/**
  * Definition for a binary tree node.
  * struct TreeNode {
  *     int val;
  *     TreeNode *left;
  *     TreeNode *right;
  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  * };
  */
class  Solution {
public :
     vector<vector< int >> levelOrderBottom(TreeNode* root) {
         vector<vector< int >> result;
         queue<TreeNode *> current,next;
         vector< int > level;
         if (NULL == root)
             return  result;
         current.push(root);
         
         while (current.size())
         {
             while (current.size())
             {
                 TreeNode *p;
                 p = current.front();
                 current.pop();
                 level.push_back(p->val);
                 if (p->left)
                     next.push(p->left);
                 if (p->right)
                     next.push(p->right);
             }
             result.push_back(level);
             level.clear();
             swap(current,next);
         }
         reverse(result.begin(),result.end());
         //相对与Binary Tree Level Order Traversal只加了这一句。reverse(),反转
         return  result;
     }
};



本文转自313119992 51CTO博客,原文链接:http://blog.51cto.com/qiaopeng688/1834833
相关文章
|
4月前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
33 0
|
4月前
【LeetCode 38】617.合并二叉树
【LeetCode 38】617.合并二叉树
30 0
|
4月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
33 0
|
4月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
38 0
|
4月前
【LeetCode 32】111.二叉树的最小深度
【LeetCode 32】111.二叉树的最小深度
30 0
|
4月前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
39 2
|
4月前
【LeetCode 29】226.反转二叉树
【LeetCode 29】226.反转二叉树
36 2
|
4月前
【LeetCode 28】102.二叉树的层序遍历
【LeetCode 28】102.二叉树的层序遍历
27 2
|
6月前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
|
6月前
|
算法 Java
LeetCode第94题二叉树的中序遍历
文章介绍了LeetCode第94题"二叉树的中序遍历"的解法,使用递归实现了中序遍历的过程,遵循了"左根右"的遍历顺序,并提供了清晰的Java代码实现。
LeetCode第94题二叉树的中序遍历