LeetCode题解(Week5): 515. Find Largest Value in Each Tree Row
来源:互联网 发布:电脑性能评测软件 编辑:程序博客网 时间:2024/06/08 11:38
* 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]
中文大意
找出一棵树中每一层的最大值
题解
/** * 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: void searchTree(TreeNode* curr,int level, vector<int>& res){ // 判断目前vector中当前层的元素是不是最大值 if(res.size() > level && res[level] < curr->val) res[level] = curr->val; // 由于level是递增的,不会发生跳变,因此可以这样做 if(res.size() <= level) res.push_back(curr->val); //递归 if(curr->left) searchTree(curr->left,level+1,res); if(curr->right) searchTree(curr->right,level+1,res); } vector<int> largestValues(TreeNode* root) { vector<int> res; if(root)//考虑到输入有可能是一个空树 searchTree(root,0,res);//递归根节点 return res; }};
解析
这到题目的核心在于找出每一个节点所在的层。如果能把对应的层数找出来,求最大值也就好办。在这里我用了DFS,在递归的时候通过一个函数参数来记录当前所在的层数。每次递归时,找到当前节点的值以及对应层数。如果层数对应的元素还没有在vector则通过push_back添加,如果vector已经有对应层数,就比较该元素值与当前的节点值。若左右子节点不为空,则进行递归。
分析算法复杂度:这道题目不需要额外的空间去存储变量,若有N个树节点,就需要递归N次,因此算法复杂度为O(N)
0 0
- LeetCode题解(Week5): 515. Find Largest Value in Each Tree Row
- LeetCode 515. Find Largest Value in Each Tree Row
- LeetCode OJ 515. 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
- 【LeetCode】515. 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
- leetcode 515. 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
- leetcode 515. 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 (C++)
- leetcode 515. 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
- LeetCode 515. Find Largest Value in Each Tree Row
- C语言自守数
- C#基础学习——流程控制语句
- scrapy中pipelines
- 堆相关漏洞利用libc异常提示原因记录
- C语言回炉(3)
- LeetCode题解(Week5): 515. Find Largest Value in Each Tree Row
- ORCLE知识点总结
- 3.25天梯赛总结
- Eclipse LUNA (4.4.0)创建maven web 项目
- 数据结构与算法(单向链表)
- 【Activiti工作流】9.连线
- Android 屏幕适配方案
- Linux中find的常用指令的用法及作用
- 解析json文本并使用handler完成三个控件文本内容的切换