Binary Tree Level Order Traversal II
2015-05-31 10:29
288 查看
class Solution { public: vector<vector<int>> result; vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<TreeNode*> thisleveldata; vector<TreeNode*> topleveldata; if(root == NULL) return result; vector<int> levelresult; levelresult.push_back(root->val); result.push_back(levelresult); //insert_iterator<vector<vector<int>>> iter; int i=0; topleveldata.push_back(root); while(1) { levelresult.clear(); thisleveldata.clear(); if(topleveldata.size() == 0) break ; for(i= 0; i < topleveldata.size() ;i++) { AddResult(topleveldata[i],levelresult,thisleveldata); } //AddEnd(topleveldata[topleveldata.size()-1],levelresult,thisleveldata); if(levelresult.size()!=0) result.insert(result.begin(),levelresult); topleveldata.resize(thisleveldata.size()); copy(thisleveldata.begin(),thisleveldata.end(),topleveldata.begin()); } return result; } void AddResult(TreeNode* pNode,vector<int>& levelresult,vector<TreeNode*>& thisleveldata) { TreeNode* pNext; if(pNode->left != NULL) { pNext = pNode->left; thisleveldata.push_back(pNext); levelresult.push_back(pNext->val); } if(pNode->right != NULL) { pNext = pNode->right; thisleveldata.push_back(pNext); levelresult.push_back(pNext->val); } } void AddEnd(TreeNode* pNode,vector<int>& levelresult,vector<TreeNode*>& thisleveldata) { if(pNode->right!=NULL) { AddResult(pNode,levelresult,thisleveldata); } else { TreeNode* pNext; if(pNode->left!=NULL) { pNext = pNode->left; thisleveldata.push_back(pNext); levelresult.push_back(pNext->val); } } } };
相关文章推荐
- Android CTS 测试总结【转】
- 安装vnc
- 仅为了方便以后提交审核的时候能有参考
- Java 虚拟机
- 反射之简单实例
- App installation failed There was an internal API error.
- 自测3. 数组元素循环右移问题
- php转json格式出现中文的解决办法
- 第五次作业
- 指针1
- 指针1
- AVS+标准应用现状
- Android学习之路—新手学Android的体会!
- 利用Github建立你的个人网站
- 利用Github建立你的个人网站
- hdu1722 - cake
- Thinkphp 3.0 得取最后的Sql 语句操作
- html5.js
- leetcode Maximum Depth of Binary Tree
- WIFI模块ESP8266使用总结和示例