515. 在每个树行中找最大值-深度优先遍历
遍历 深度 每个 最大值 优先
2023-09-14 09:06:52 时间
515. 在每个树行中找最大值
给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。
示例1:
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
示例2:
输入: root = [1,2,3]
对于这题个人做了一些优化,可以节省一些空间复杂度。解题代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int high_tree(struct TreeNode* root){
if(root){
int a=high_tree(root->left)+1;
int b=high_tree(root->right)+1;
return fmax(a,b);
}
else{
return 0;
}
}
void find_max(struct TreeNode* root,int now_h,int *re){
if(root){
if(root->val>re[now_h]){
re[now_h]=root->val;
}
find_max(root->left,now_h+1,re);
find_max(root->right,now_h+1,re);
}
}
int* largestValues(struct TreeNode* root, int* returnSize){
int h=high_tree(root);
int *re=(int *)malloc(sizeof(int)*h);
for(int i=0;i<h;i++){
re[i]=-2147483648;
}
find_max(root,0,re);
* returnSize=h;
return re;
}
相关文章
- java遍历ArrayList的四种方法[通俗易懂]
- 【说站】js深度优先遍历的介绍
- Python遍历列表remove漏删解决方案
- 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
- 【Groovy】集合遍历 ( “ *. “ 展开操作符 | 代码示例 )
- Redis遍历所有key的两个命令(KEYS 和 SCAN)
- Objective-C遍历数组NSArray的3种方法详解手机开发
- MySQL结果:一次遍历,无限收获(mysql结果遍历)
- MySQL数据库深度探索:遍历之旅(mysql数据库遍历)
- MySQL循环遍历 —— 实现无缝执行(mysql循环遍历)
- Redis如何高效地遍历list?(redis遍历list)
- 深度优先遍历Oracle树结构(oracle树的遍历)
- Redis脚本快速遍历Map集(redis脚本遍历map)
- asp遍历站点所有文件夹的代码
- 浅析jQuery对select操作小结(遍历option,操作option)
- javamap遍历的四种方法总结
- 纯C语言:检索与周游广度深度遍历源码分享
- JQuery遍历json数组的3种方法