当前位置: 首页 > news >正文

每日力扣算法题(简单篇)

543.二叉树的直径

原题:

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

解题思路:

树类题目通常采用递归的解法,这里我们可以将题目理解为,求和左右节点最大的高度和,首先将假设只有四个节点:

我们先将问题分解为一个个子问题,先递下去,先向左遍历,从1到2再到4,发现4左右节点均为空,其左右节点返回0,归上去,节点4返回1高度,归到2节点处,由于左侧已经归了上来,则开始遍历右侧,发现右侧为空,返回0,求取左右的最大高度,结果为1,再加上该节点本身的高度,向上归,返回2,回到节点1,节点1再重复节点2的操作,返回最终结果4

顺着该思路我们便有如下代码

源代码:

int highsum(struct TreeNode* root,int maxlen,int *maxans)
{if(!root){return 0;}int left_hight=highsum(root->left,maxlen,maxans)+1;int right_hight=highsum(root->right,maxlen,maxans)+1;maxlen=fmax(left_hight,right_hight);*maxans=fmax(*maxans,right_hight+left_hight-2);return maxlen;
}
int diameterOfBinaryTree(struct TreeNode* root) {int ans=0;highsum(root,0,&ans);return ans;
}

http://www.lryc.cn/news/272838.html

相关文章:

  • Flume基础知识(三):Flume 实战监控端口数据官方案例
  • 通过IP地址如何进行网络安全防护
  • Vue.js 中使用 Watch 选项实现动态问题判断与展示答案
  • python笔记-自用
  • 安克创新与火山引擎数智平台开展合作:数据分析降门槛 数据协同破边界
  • LDD学习笔记 -- Linux内核模块
  • springboot整合springbatch批处理
  • 答案解析——C语言—第2次作业:转义字符
  • HTML5-新增表单input属性
  • css-、串联选择器和后代选择器的用法
  • nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件
  • K8S Dashboard登录Token过期问题处理
  • x-cmd pkg | trafilatura - 网络爬虫和搜索引擎优化工具
  • 前端知识点(面试可看) —— JS
  • CSRF总结
  • 降维算法的简单介绍
  • k8s的声明式资源管理
  • Git | tag相关命令
  • 【Java期末】学生成绩管理系统
  • 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)
  • SQL Server从0到1——报错注入
  • 【python高级用法】线程
  • 分布式高级知识点
  • Linux 命令之 dpkg 的简单使用
  • Ubuntu20.04服务器使用教程(安装教程、常用命令、故障排查)持续更新中.....
  • 访问学者J1签证的申请流程
  • 51单片机(STC8)-- GPIO输入输出
  • 【实用安装教程】在win系统下制作Mac OS镜像启动U盘
  • 职场唠嗑-国家教学
  • 【温故而知新】JavaScript数据结构详解