543.二叉树的直径

39 阅读1分钟

题目:
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
解法:

var maxDiameter int
func diameterOfBinaryTree(root *TreeNode) int {
	maxDiameter = 0
	MaxDepth(root)
	return maxDiameter
}

func MaxDepth(root *TreeNode) int {
	if root == nil {
		return 0
	}
	left := MaxDepth(root.Left)
	right := MaxDepth(root.Right)
	if left + right > maxDiameter {
		maxDiameter = left + right
	}
	if left > right {
		return left + 1
	}
	return right + 1
}