[leetcode 107]Binary Tree Level Order Traversal II
2015-11-01 18:02
351 查看
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { private: int heightOfTree(TreeNode* root){ if(root == NULL) return 0; else return max(heightOfTree(root->left),heightOfTree(root->right))+1; } public: //用队列的方法 /* vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> result; vector<int> vals; queue<TreeNode*> que; if(root == NULL) return result; que.push(root); que.push(NULL);//用每一层结束入队后加入NULL来识别层数; while(!que.empty()){ TreeNode* node; node = que.front(); que.pop(); if(node != NULL){ vals.push_back(node->val); if(node->left != NULL) que.push(node->left); if(node->right != NULL) que.push(node->right); } else{ if(!vals.empty()){ result.push_back(vals); vals.clear(); que.push(NULL); } } } reverse(result.begin(),result.end()); return result; }*/ //记录每层层数的方法 void levelOrder(vector<vector<int>> &ans, TreeNode *node, int level) { if (!node) return; ans[level].push_back(node->val); levelOrder(ans,node->left,level-1); levelOrder(ans,node->right,level-1); } vector<vector<int>> levelOrderBottom(TreeNode* root) { int d = heightOfTree(root); vector<vector<int>> ans(d); levelOrder(ans,root,d-1); return ans; } };
相关文章推荐
- CSS reset的重新审视 – 避免样式重置
- G - Antiarithmetic?
- 跨界技术人
- 非科班出身的人学习编程不负责任指南
- 安装Nginx
- Maven
- oracle ASM kfod 不太常用的几个参数
- 流控思路——多消费者定量生产(第100篇)
- [Linux学习笔记] Linux常用命令 - 番外篇(Shell使用技巧)
- [leetcode 27]Remove Element
- java抽象类和接口
- hdu4781Assignment For Princess 构造
- web开发中遇到的奇葩错误
- 黑马程序员——OC基础---@property @synthesize
- rem
- && 中断且 , & 非中断且(与运算) ,|| 中断或 , | 非中断或的区分
- linux mysql 操作命令
- [leetcode 101]Symmetric Tree
- C++与linus
- [转]android系统各种音量的获取与设置