Find Largest Value in Each Tree Row宽度优先遍历算法详解
2017-05-13 21:49
501 查看
问题详见: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算法搜索每一层以得到每一层的最大值,其算法复杂度为O(n)。下面是算法的C++代码和提交结果图。BFS:
/** * 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> solution; void helper(TreeNode* node, int cl) { if (node == NULL) { return; } if (solution.size() < cl + 1) { solution.push_back(node->val); } else { if (solution[cl] < node->val) { solution[cl] = node->val; } } helper(node->left, cl+1); helper(node->right, cl+1); } vector<int> largestValues(TreeNode* root) { if(root == NULL) { return solution; } helper(root, 0); return solution; } };
提交运行结果:
相关文章推荐
- Find Bottom Left Tree Value宽度优先遍历算法详解
- LeetCode算法问题17 —— Find Largest Value in Each Tree Row
- 第十二周算法分析与设计: Find Largest Value in Each Tree Row
- LeetCode 515 Find Largest Value in Each Tree Row(二叉树层序遍历)
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- 【LEETCODE】 Find Largest Value in Each Tree Row javascript实现
- 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
- 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
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row(找出一棵树每一行的最大值)
- leetcode515 Find Largest Value In Each Tree Row Java
- [LeetCode]515 Find Largest Value in Each Tree Row(dfs)