[LeetCode] Binary Tree Level Order Traversal II
2015-06-02 23:31
459 查看
Well, I do not see what this problem is for. The same code of Binary Tree Level Order Traversal can be used here. The only difference is that we should reverse the result before we return.
Again, both BFS and DFS solutions.
BFS:
DFS:
Again, both BFS and DFS solutions.
BFS:
vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int> > levels; if(!root) return levels; queue<TreeNode*> toVisit; toVisit.push(root); int numLevelNodes = 1; while(!toVisit.empty()) { vector<int> level; for(int i = 0; i < numLevelNodes; i++) { TreeNode *node = toVisit.front(); toVisit.pop(); level.push_back(node -> val); if(node -> left) toVisit.push(node -> left); if(node -> right) toVisit.push(node -> right); } if (!level.empty()) levels.push_back(level); numLevelNodes = toVisit.size(); } reverse(levels.begin(), levels.end()); return levels; }
DFS:
vector<vector<int>> levelOrderBottom(TreeNode *root) { vector<vector<int>> levels; if(!root) return levels; int curLevel = 1; bool nextLevel = true; while(nextLevel) { vector<int> level; nextLevel = false; levelTraverse(root, curLevel, nextLevel, level); levels.push_back(level); curLevel++; } reverse(levels.begin(), levels.end()); return levels; } void levelTraverse(TreeNode* node, int curLevel, bool& nextLevel, vector<int>& level) { if(!node) return; if(curLevel == 1) { level.push_back(node -> val); if(node -> left || node -> right) nextLevel = true; } else { levelTraverse(node -> left, curLevel - 1, nextLevel, level); levelTraverse(node -> right, curLevel - 1, nextLevel, level); } }
相关文章推荐
- JAVA除法保留小数点后两位的两种方法
- adb操作多个设备
- 机器视觉与计算机视觉的区分
- Python面试题集
- AttributeError at /home/home/ Exception Type: AttributeError at /home/home/
- 指针式压力表自动读数:Auto Read the Value of Manometer
- Zookeeper基本原理
- Mac OS X Yosemite 10.10.2使用cgdb初步
- maven使用
- 使用DirectShow播放MP3,实现循环播放,显示播放进度
- Android入门级编译错误汇总
- 《Spring2之站立会议5》
- ASP.NETC#通用扩展函数之TypeParse 类型转换方便多了
- [LeetCode] Binary Tree Level Order Traversal
- 五大常用算法之四:回溯法
- 五大常用算法之五:分支限界法
- JSON和JSONP的区别
- MySQL索引的创建、删除和查看
- js输出单一字符字串
- php约瑟夫环