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))
- // }
|