LeetCode:Find Largest Value in Each Tree Row
2017-10-02 21:42
239 查看
题目链接:https://leetcode.com/problems/find-largest-value-in-each-tree-row/description/
主要思路:使用宽度优先搜索算法,遍历完一层的结点,比较得出该行的最大值,然后继续遍历下一层。
代码如下:
vector<int> largestValues(TreeNode* root) {
vector<TreeNode*> now_row;
vector<int> result;
if (root != NULL) {
now_row.push_back(root);
result.push_back(root->val);
while(!now_row.empty()) {
vector<TreeNode*> next_row;
vector<int> row_val;
while(!now_row.empty()) {
TreeNode *temp = now_row.back();
now_row.pop_back();
if (temp->left != NULL) {
row_val.push_back(temp->left->val);
next_row.push_back(temp->left);
}
if (temp->right != NULL) {
row_val.push_back(temp->right->val);
next_row.push_back(temp->right);
}
}
int max;
if (!row_val.empty()) {
max = row_val[0];
for(int i = 1; i < row_val.size(); i++) {
if (row_val[i] > max) {
max = row_val[i];
}
}
result.push_back(max);
}
now_row.clear();
for(int i = 0; i < next_row.size(); i++) {
now_row.push_back(next_row[i]);
}
}
}
return result;
}
主要思路:使用宽度优先搜索算法,遍历完一层的结点,比较得出该行的最大值,然后继续遍历下一层。
代码如下:
vector<int> largestValues(TreeNode* root) {
vector<TreeNode*> now_row;
vector<int> result;
if (root != NULL) {
now_row.push_back(root);
result.push_back(root->val);
while(!now_row.empty()) {
vector<TreeNode*> next_row;
vector<int> row_val;
while(!now_row.empty()) {
TreeNode *temp = now_row.back();
now_row.pop_back();
if (temp->left != NULL) {
row_val.push_back(temp->left->val);
next_row.push_back(temp->left);
}
if (temp->right != NULL) {
row_val.push_back(temp->right->val);
next_row.push_back(temp->right);
}
}
int max;
if (!row_val.empty()) {
max = row_val[0];
for(int i = 1; i < row_val.size(); i++) {
if (row_val[i] > max) {
max = row_val[i];
}
}
result.push_back(max);
}
now_row.clear();
for(int i = 0; i < next_row.size(); i++) {
now_row.push_back(next_row[i]);
}
}
}
return result;
}
相关文章推荐
- LeetCode: 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] Find Largest Value in Each Tree Row 找树每行最大的结点值
- LeetCode之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
- 【LeetCode】Find Largest Value in Each Tree Row 解题报告
- LeetCode算法问题17 —— Find Largest Value in Each Tree Row
- LeetCode Find Largest Value in Each Tree Row
- leetcode515 Find Largest Value In Each Tree Row Java
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- 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(二叉树层序遍历)
- 【LeetCode515 Find Largest Value in Each Tree Row】二叉树每行的最大值
- LeetCode之Find Largest Value in Each Tree Row(Kotlin)
- Medium:Find Largest Value in Each Tree Row
- LeetCode.515 Find Largest Value in Each Tree Row