首页 > 代码库 > 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]]

从底部层序遍历其实还是从顶部开始遍历,只不过最后存储的方式有所改变,可以参见我之前的博文 http://www.cnblogs.com/grandyang/p/4051321.html。 代码如下:

 

/** * Definition for binary tree * 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> > res;        if (root == NULL) return res;        queue<TreeNode*> q;        q.push(root);        while (!q.empty()) {            vector<int> oneLevel;            int size = q.size();            for (int i = 0; i < size; ++i) {                TreeNode *node = q.front();                q.pop();                oneLevel.push_back(node->val);                if (node->left) q.push(node->left);                if (node->right) q.push(node->right);            }            res.insert(res.begin(), oneLevel);        }        return res;    }};

 

Binary Tree Level Order Traversal II 二叉树层序遍历之二