| 123456789101112131415161718192021222324252627282930 | 
							- var max int = 0
 
- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func diameterOfBinaryTree(root *TreeNode) int {
 
- 	max = 0
 
- 	postorder(root, &max)
 
- 	return
 
- }
 
- func postorder(root *TreeNode, max *int) int {
 
- 	if root == nil {
 
- 		return -1
 
- 	}
 
- 	l := postorder(root.Left, max) + 1
 
- 	r := postorder(root.Right, max) + 1
 
- 	if *max < l+r {
 
- 		*max = l + r
 
- 	}
 
- 	if l < r {
 
- 		return r
 
- 	}
 
- 	return l
 
- }
 
 
  |