[LeetCode]515 Find Largest Value in Each Tree Row(dfs)

题目链接:https://leetcode.com/problems/find-largest-value-in-each-tree-row/?tab=Description

题意:找每层的最大值。

直接dfs扔map里

 1 class Solution {
 2 public:
 3     int sz;
 4     map<int, int> ret;
 5     void dfs(TreeNode* p, int d) {
 6         sz = max(sz, d);
 7         if(ret.find(d) == ret.end()) ret[d] = p->val;
 8         else ret[d] = max(ret[d], p->val);
 9         if(p->left) dfs(p->left, d+1);
10         if(p->right) dfs(p->right, d+1);
11     }
12     vector<int> largestValues(TreeNode* root) {
13         ret.clear();
14         sz = -1;
15         if(root == NULL) return vector<int>();
16         dfs(root, 0);
17         vector<int> v;
18         for(int i = 0; i <= sz; i++) v.push_back(ret[i]);
19         return v;
20     }
21 };
时间: 2024-11-09 20:03:08

[LeetCode]515 Find Largest Value in Each Tree Row(dfs)的相关文章

(BFS 二叉树) leetcode 515. Find Largest Value in Each Tree Row

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较为简单. C++代码: /** * Definition for a b

515. Find Largest Value in Each Tree Row 二叉树每一层的最大值

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的方式遍历每一层 class Solution(object): def largestValues(self, root): """ :type root: TreeNode :rtype: Li

515. Find Largest Value in Each Tree Row

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, 不多说 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeN

515 Find Largest Value in Each Tree Row 在每个树行中找最大值

在二叉树的每一行中找到最大的值.示例:输入:           1         /  \        3   2       /  \    \        5   3    9 输出: [1, 3, 9] 详见:https://leetcode.com/problems/find-largest-value-in-each-tree-row/description/ C++: /** * Definition for a binary tree node. * struct Tree

515. Find Largest Value in Each Tree Row查找一行中的最大值

[抄题]: 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] [暴力解法]: 时间分析: 空间分析: [优化后]: 时间分析: 空间分析: [奇葩输出条件]: [奇葩corner case]: [思维问题]: 不知道怎么确定每一行的大小:不熟悉bfs.其中q每次只存了一行,所以size就是当前数组的大小 [英文

POJ 2378 Tree Cutting (DFS)

题目链接:http://poj.org/problem?id=2378 一棵树,去掉一个点剩下的每棵子树节点数不超过n/2.问有哪些这样的点,并按照顺序输出. dfs回溯即可. 1 //#pragma comment(linker, "/STACK:102400000, 102400000") 2 #include <algorithm> 3 #include <iostream> 4 #include <cstdlib> 5 #include &l

【USACO 2004 DEC】网络破坏Tree Cutting(DFS)

题目描述 约翰意识到贝茜建设网络花费了他巨额的经费,就把她解雇了.贝茜很愤怒,打算狠狠报 复.她打算破坏刚建成的约翰的网络. 约翰的网络是树形的,连接着N(1≤N≤10000)个牛棚.她打算切断某一个牛棚的电源,使和这个牛棚相连的所有电缆全部中断.之后,就会存在若干子网络.为保证破坏够大,每一个子网的牛棚数不得超过总牛棚数的一半,哪些牛棚值得破坏呢? 输入 第1行:一个整数N. 第2到N行:每行输入两个整数,表示一条电缆的两个端点. 输出 按从小到大的顺序,输出所有值得破坏的牛棚.如果没有一个值

LeetCode Subsets (DFS)

题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. 1 class Solution { 2 public: 3 vector<vector<int>> subsets(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 DFS(0,nums,tmp); 6 return a

LeetCode Subsets II (DFS)

题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) 1 class Solution { 2 public: 3 vector<vector<int>> subsets(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 DFS(0,nums,tmp); 6 ans.push_back(vector