LintCode-70.二叉树的层次遍历 II

二叉树的层次遍历 II

给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)

样例

给出一棵二叉树 {3,9,20,#,#,15,7},

按照从下往上的层次遍历为:
[
    [15,7],
    [9,20],
    [3]
]

标签

二叉树 队列 二叉树遍历 宽度优先搜索

code

/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
/
class Solution {
/

* @param root : The root of binary tree.
* @return : buttom-up level order a list of lists of integer
*/
public:
vector<vector> levelOrderBottom(TreeNode *root) {
// write your code here

vector<vector > order;
queue<TreeNode*> queue;
int len;

if(root == NULL) {
return order;
}

queue.push(root);
len = queue.size();

while(!queue.empty()) {
vector base;
len = queue.size();

while(len--) {
TreeNode *tmp=queue.front();
base.push_back(tmp->val);
queue.pop();
if(tmp->left)
queue.push(tmp->left);
if(tmp->right)
queue.push(tmp->right);
}
order.push_back(base);
}

vector<vector > order2;
int i;

for(i=order.size()-1; i>=0; i--) {
order2.push_back(order[i]);
}

return order2;
}
};

posted @ 2017-05-04 16:36  LiBaoquan  阅读(322)  评论(0)    收藏  举报