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
}