Breadth-first Search -- Leetcode problem515. Find Largest Value in Each Tree Row
来源:互联网 发布:3d智能试衣镜 知乎 编辑:程序博客网 时间:2024/06/08 18:09
- 描述:You need to find the largest value in each row of a binary tree.
Example:
Input:
1 / \ 3 2 / \ \ 5 3 9
Output: [1, 3, 9]
分析:这道题要求找到每层树中最大的元素,并输出。
思路一:用bfs对整棵数进行搜索,并寻找最大值。我采用了set内置的排序对每层的元素进行排序,将每次得到的set的最后一个元素加入vector。
/** * 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 {public: vector<int> largestValues(TreeNode* root) { vector<int> result; if (!root) return result; set<int> my_set; set<int>::iterator it; queue<TreeNode*> my_queue; result.push_back(root -> val); my_queue.push(root); while (!my_queue.empty()) { int n = my_queue.size(); my_set.clear(); for (int i = 0; i < n; i ++) { TreeNode* temp = my_queue.front(); my_queue.pop(); if (temp -> left) { my_set.insert(temp -> left -> val); my_queue.push(temp -> left); } if (temp -> right) { my_set.insert(temp -> right -> val); my_queue.push(temp -> right); } } if (!my_set.empty()) { it = my_set.end(); it--; result.push_back(*it); } } return result;}};
- 思路二:用递归的方式实现。(dfs)
class Solution {public: void dfs(TreeNode* root, vector<int>& result, int deepth) { if (!root) return; if (deepth > result.size()) result.push_back(root -> val); else result[deepth - 1] = max(result[deepth - 1], root -> val); dfs(root -> left, result, deepth + 1); dfs(root -> right,result, deepth + 1);}vector<int> largestValues(TreeNode* root) { vector<int> result; if (!root) return result; dfs(root, result, 1); return result;}};
阅读全文
0 0
- Breadth-first Search -- Leetcode problem515. Find Largest Value in Each Tree Row
- 515. Find Largest Value in Each Tree Row | Breadth-first Search
- LeetCode 515. Find Largest Value in Each Tree Row
- LeetCode OJ 515. Find Largest Value in Each Tree Row
- 【LEETCODE】 Find Largest Value in Each Tree Row javascript实现
- [leetcode 515]Find Largest Value in Each Tree Row
- LeetCode笔记:515. Find Largest Value in Each Tree Row
- [leetcode] 515. Find Largest Value in Each Tree Row
- 【LeetCode】515. Find Largest Value in Each Tree Row
- LeetCode;515. Find Largest Value in Each Tree Row
- LeetCode #515: Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode 515 Find Largest Value in Each Tree Row C++
- leetcode 515. Find Largest Value in Each Tree Row
- 【LeetCode】Find Largest Value in Each Tree Row 解题报告
- leetcode-515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- iOS设置圆角矩形和阴影效果
- Angular 4/2 Http get() Parameters + Headers + URLSearchParams + RequestOptions Exam
- Android保存图片到系统相册
- BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)
- Java ClassLoad详解
- Breadth-first Search -- Leetcode problem515. Find Largest Value in Each Tree Row
- IIS权限控制(sqlite只读)
- ios 实现系统加载动画 红色小菊花
- 正则表达式最全总结
- 记一次亲身经历的高速三车追尾及处理全流程
- 阿里成立达摩院,引入10位顶尖科学家3年投入预计超1000亿,马云提出4条期待(附:学术咨询委员会成员名单)
- Map获取键值,Map的几种遍历方法
- BZOJ1007 [HNOI2008]水平可见直线
- setTimeout()与setInterval()的区别