LeetCode543 二叉树的直径
问题描述

思路
每个节点的直径为,左右子树最大深度之和
代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func diameterOfBinaryTree(root *TreeNode) int {
var res int
maxDepth(root, &res)
return res
}
func maxDepth(root *TreeNode, res *int) int {
if root == nil {
return 0
}
leftMax := maxDepth(root.Left, res)
rightMax := maxDepth(root.Right, res)
maxDepth := max(leftMax, rightMax)
temp := leftMax + rightMax
*res = max(temp, *res)
return 1 + maxDepth
}
func max(a, b int) int {
if a < b {
a = b
}
return a
}
本文介绍了解决LeetCode543题“二叉树的直径”的算法思路及Go语言实现。通过递归求解每个节点的左右子树最大深度之和来找到整棵树的最大直径。
296

被折叠的 条评论
为什么被折叠?



