| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- package main
 
- // type TreeNode struct {
 
- // 	Val   int
 
- // 	Left  *TreeNode
 
- // 	Right *TreeNode
 
- // }
 
- // func maxInt(x, y int) int {
 
- // 	if x > y {
 
- // 		return x
 
- // 	}
 
- // 	return y
 
- // }
 
- // func abs(x int) int {
 
- // 	if x < 0 {
 
- // 		return -x
 
- // 	}
 
- // 	return x
 
- // }
 
- func treeDepth(root *TreeNode, depth int) int {
 
- 	if root == nil {
 
- 		return depth
 
- 	}
 
- 	return maxInt(treeDepth(root.Left, depth+1), treeDepth(root.Right, depth+1))
 
- }
 
- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func isBalanced(root *TreeNode) bool {
 
- 	if root == nil {
 
- 		return true
 
- 	}
 
- 	if abs(treeDepth(root.Left, 0)-treeDepth(root.Right, 0)) > 1 {
 
- 		return false
 
- 	}
 
- 	return isBalanced(root.Left) && isBalanced(root.Right)
 
- }
 
- // func main() {
 
- // 	/**
 
- // 	 * t1:  5
 
- // 	 *     / \
 
- // 	 *    1   4
 
- // 	 *       / \
 
- // 	 *      2   3
 
- // 	 */
 
- // 	t1l := TreeNode{1, nil, nil}
 
- // 	t1rl := TreeNode{2, nil, nil}
 
- // 	t1rr := TreeNode{3, nil, nil}
 
- // 	t1r := TreeNode{4, &t1rl, &t1rr}
 
- // 	t1 := &TreeNode{5, &t1l, &t1r}
 
- // 	fmt.Println(isBalanced(t1))
 
- // 	fmt.Println(isBalanced(nil))
 
- // }
 
 
  |