Binary Tree Level Order Traversal II
- Lintcode : 70 / Leetcode : 107
- Level : Medium
Problem
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).
Example
Example 1:
Input:
{1,2,3}
Output:
[[2,3],[1]]
Explanation:
1
/ \
2 3
it will be serialized {1,2,3}
level order traversal
Example 2:
Input:
{3,9,20,#,#,15,7}
Output:
[[15,7],[9,20],[3]]
Explanation:
3
/ \
9 20
/ \
15 7
it will be serialized {3,9,20,#,#,15,7}
level order traversal
Concept & Algorithm
Time Complexity & Space Complexity
time : O(n)
space: O(n)
Answer
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode * root) {
vector<vector<int>> ans;
if (root == nullptr) return ans;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()) {
int s = q.size();
vector<int> res;
for (int i = 0; i < s; i++) {
TreeNode* p = q.front(); q.pop();
res.push_back(p -> val);
if (p -> left) q.push(p -> left);
if (p -> right) q.push(p -> right);
}
ans.insert(ans.begin(), res);
}
return ans;
}
};
沒有留言:
張貼留言