2015年做啥网站能致富,免费咨询离婚律师在线,精准大数据营销公司,浏览器打开题目
给你一棵二叉树的根节点#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。
示例
输入#xff1a;root [1,2,3,4,5] 输出#xff1…题目
给你一棵二叉树的根节点返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。
示例
输入root [1,2,3,4,5] 输出3 解释3 取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。
解析
这道题竟然标的是简单。。。也没那么简单吧官方题解的那个视频将的比较好想不明白了可以去看下视频。 要去求最大的啥啥啥首先就得考虑设置一个变量来存最大值这个是经常用到的思路。 然后如何计算直径其实就是每个节点的左节点深度 右节点深度比如有下面这颗二叉树 4的深度是15的深度是12的深度是23的深度是11的深度是最大值2 而每个节点的对应的直径是左子树的深度 右子树的深度所以节点1的直径就是3 两个叶子节点的路径 根节点左右儿子的深度之和
func diameterOfBinaryTree(root *TreeNode) int {ans : 0var traversal func(node *TreeNode) inttraversal func(node *TreeNode) int{if node nil {return 0}left : traversal(node.Left)right : traversal(node.Right)ans max(ans, leftright)return max(left, right) 1}traversal(root)return ans
}func max[T int](a, b T) T {if a b {return a}return b
}