LeetCode算法问题17 —— Find Largest Value in Each Tree Row
2018-01-16 16:10
555 查看
首先看一下问题描述
要求我们找到一个二叉树每一层的最大值
这个问题用BFS、DFS都可以解决,且不得不遍历整棵树。在遍历过程中,需要时刻记录当前节点的深度,以便比较同深度下的节点值以获取每一层的最大值
本题我采用了DFS算法,对于主干函数largestValues,通过操作:
通过explore函数对容器answer进行填满。对于容器answer,answer[i]表示深度为i的一层(起始深度为0)的最大值。
对于explore函数
参数有各自的定义:
node:当前遍历到的节点
depth:该节点在树中的深度
valueOfEachRow:用于记录每层最大值的容器
以此可通过DFS完成对每层最大值的提取。
具体代码如下:
要求我们找到一个二叉树每一层的最大值
这个问题用BFS、DFS都可以解决,且不得不遍历整棵树。在遍历过程中,需要时刻记录当前节点的深度,以便比较同深度下的节点值以获取每一层的最大值
本题我采用了DFS算法,对于主干函数largestValues,通过操作:
通过explore函数对容器answer进行填满。对于容器answer,answer[i]表示深度为i的一层(起始深度为0)的最大值。
对于explore函数
void explore(TreeNode* node, int depth, vector<int>& valueOfEachRow){}
参数有各自的定义:
node:当前遍历到的节点
depth:该节点在树中的深度
valueOfEachRow:用于记录每层最大值的容器
以此可通过DFS完成对每层最大值的提取。
具体代码如下:
void explore(TreeNode* node, int depth, vector<int>& valueOfEachRow) { if (node == NULL) return; if (valueOfEachRow.size() <= depth) { valueOfEachRow.push_back(node->val); } else { if (valueOfEachRow[depth] < node->val) valueOfEachRow[depth] = node->val; } explore(node->left, depth + 1, valueOfEachRow); explore(node->right, depth + 1, valueOfEachRow); } vector<int> largestValues(TreeNode* root) { vector<int> answer; explore(root, 0, answer); return answer; }
相关文章推荐
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- LeetCode之Find Largest Value in Each Tree Row
- leetcode 515 Find Largest Value in Each Tree Row C++
- 【LeetCode515 Find Largest Value in Each Tree Row】二叉树每行的最大值
- LeetCode:Find Largest Value in Each Tree Row
- LeetCode——Find Largest Value in Each Tree Row
- 【LeetCode】Find Largest Value in Each Tree Row 解题报告
- 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(dfs)
- LeetCode之Find Largest Value in Each Tree Row(Kotlin)
- 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(二叉树层序遍历)
- 第十二周算法分析与设计: Find Largest Value in Each Tree Row
- LeetCode Find Largest Value in Each Tree Row
- LeetCode--Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row问题及解法
- 【LEETCODE】 Find Largest Value in Each Tree Row javascript实现
- leetcode515 Find Largest Value In Each Tree Row Java