Binary Tree Level Order Traversal II
思路同上题,不过在结束的时候用另一个vector把结果反向拷了出来。不知道有没有其他的办法。
vector<vector<int> > levelOrderBottom(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<int> > result; result.clear(); if(root == NULL) return result; vector<int> tmp; vector<TreeNode*> nodeVec; nodeVec.reserve(1000); nodeVec.push_back(root); vector<TreeNode*>::iterator head, tail; head = nodeVec.begin(); tail = nodeVec.end()-1; while(!nodeVec.empty()){ tmp.clear(); while(head <= tail){ tmp.push_back((*head)->val); if((*head)->left != NULL){ nodeVec.push_back((*head)->left); } if((*head)->right != NULL){ nodeVec.push_back((*head)->right); } head++; } result.push_back(tmp); nodeVec.erase(nodeVec.begin(), head); head = nodeVec.begin(); tail = nodeVec.end()-1; } vector<vector<int> > resultBottom; int i, n = result.size(); for(i = n-1; i >= 0; i--){ resultBottom.push_back(result[i]); } return resultBottom; }