[LeetCode] 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] ]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
在 [LeetCode] Binary Tree Level Order Traversal的基础上,将result reverse 一下就OK
class Solution { public: vector<vector<int> > levelOrderBottom(TreeNode *root) { queue<TreeNode*> q1; queue<TreeNode*> q2; vector<vector<int> > res; int depth = 0; if(root != NULL) { q1.push(root); res.push_back(vector<int> ()); } while(!q1.empty()) { TreeNode * p = q1.front(); q1.pop(); res[depth].push_back(p->val); if(p->left) q2.push(p->left); if(p->right) q2.push(p->right); if(q1.empty() && !q2.empty()) { swap(q1, q2); depth ++; res.push_back(vector<int> ()); } } reverse(res.begin(), res.end()); return res; } };