[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.
/** * 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; queue<TreeNode *> q; vector<int> ans; if(root==NULL) return res; q.push(root); int num=1; //一层有num个结点 while(!q.empty()) { ans.clear(); int count=0; //记录插入了几个结点 while(num--) { TreeNode *p=q.front(); ans.push_back(p->val); q.pop(); if(p->left) { q.push(p->left); count++; } if(p->right) { q.push(p->right); count++; } } num=count; res.push_back(ans); } reverse(res.begin(),res.end()); return res; } };