543. 二叉树的直径
1.题目介绍
给你一棵二叉树的根节点,返回该树的 直径 。
二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点
两节点之间路径的 长度 由它们之间边数表示。
示例 1:
输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。
示例 2:
输入:root = [1,2]
输出:1
提示:
- 树中节点数目在范围
内
2.题解
2.1
思路
这题可以说 是二叉树最大深度的拓展,主体思路还是使用递归,从下往上分别求得左右子树的最大深度。
这时候通过当前层该根节点的节点数最大为:左子树最大深度+右子树最大深度+1,而最大直径等于这个值-1.
这里设置一个全局变量ans来存储这个最大直径时,每次计算一个根节点的最大深度同时,也计算出其最大直径并跟ans比较,更新ans值。
代码
class Solution {
public:
int ans;
int depth(TreeNode* root){
if (root == nullptr) return 0;
int left = depth(root->left);
int right = depth(root->right);
ans = max(ans, left + right);
return max(left,right) + 1;
}
int diameterOfBinaryTree(TreeNode* root) {
ans = 0;
depth(root);
return ans;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了