【LeetCode515 Find Largest Value in Each Tree Row】二叉树每行的最大值
2017-06-23 17:04
369 查看
一、问题描述
给定一个二叉树,二叉树每一行都有一个最大值,将该值保存到一个数组中,最后输出该数组。举例如下:给定二叉树,输出数组[1,3,9]
二、思路详解
这一题是遍历树,给树的每一个节点赋予层数的信息,定义一个数组maxNum数组,存储每层中最大值,其下标i对应于树中的第i层,其中根节点为第0层。在遍历某个树节点时,先判断该节点的层数与当前数组中已存储的数是否相等,若相等,则将该节点值与当前数组最后一位值进行比较,数组取其中的最大值。若不相等,则该节点为该层第一个节点,直接将该节点值赋值给数组对应的位。深度遍历该二叉树,最后输出这个数组即可。
三、代码实现
/**
* 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) {
if(root == NULL) {
return maxNum;
}
travel(root,level);
return maxNum;
}
TreeNode* travel(TreeNode* root, int level) {
if(!root) return NULL;
if(maxNum.size() < level + 1) {
maxNum.push_back(root->val);
} else {
maxNum[level] = max(root->val,maxNum[level]);
}
travel(root->left,level+1);
travel(root->right,level+1);
return root;
}
private:
int level = 0;
vector<int> maxNum;
};
给定一个二叉树,二叉树每一行都有一个最大值,将该值保存到一个数组中,最后输出该数组。举例如下:给定二叉树,输出数组[1,3,9]
Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]
二、思路详解
这一题是遍历树,给树的每一个节点赋予层数的信息,定义一个数组maxNum数组,存储每层中最大值,其下标i对应于树中的第i层,其中根节点为第0层。在遍历某个树节点时,先判断该节点的层数与当前数组中已存储的数是否相等,若相等,则将该节点值与当前数组最后一位值进行比较,数组取其中的最大值。若不相等,则该节点为该层第一个节点,直接将该节点值赋值给数组对应的位。深度遍历该二叉树,最后输出这个数组即可。
三、代码实现
/**
* 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) {
if(root == NULL) {
return maxNum;
}
travel(root,level);
return maxNum;
}
TreeNode* travel(TreeNode* root, int level) {
if(!root) return NULL;
if(maxNum.size() < level + 1) {
maxNum.push_back(root->val);
} else {
maxNum[level] = max(root->val,maxNum[level]);
}
travel(root->left,level+1);
travel(root->right,level+1);
return root;
}
private:
int level = 0;
vector<int> maxNum;
};
相关文章推荐
- 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 Java
- [LeetCode]515 Find Largest Value in Each Tree Row(dfs)
- [leetcode 515]Find Largest Value in Each Tree Row
- leetcode 515 Find Largest Value in Each Tree Row C++
- LeetCode: Find Largest Value in Each Tree Row
- LeetCode Find Largest Value in Each Tree Row
- 515[Medium]:Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row(找出一棵树每一行的最大值)
- LeetCode算法问题17 —— Find Largest Value in Each Tree Row
- 【LeetCode】Find Largest Value in Each Tree Row 解题报告
- 【LEETCODE】 Find Largest Value in Each Tree Row javascript实现
- LeetCode之Find Largest Value in Each Tree Row
- LeetCode--Find Largest Value in Each Tree Row
- LeetCode之Find Largest Value in Each Tree Row(Kotlin)
- LeetCode——Find Largest Value in Each Tree Row
- LeetCode:Find Largest Value in Each Tree Row
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)