Skip to content

Height of A Binary Tree

Implemenation

package main

import "fmt"

type TreeNode struct {
    Val   int
    Left  *TreeNode
    Right *TreeNode
}

type ListNode struct {
    Val  int
    Next *ListNode
}

func main() {
    root := &TreeNode{
        Val: 10,
        Left: &TreeNode{
            Val: 20,
            Left: &TreeNode{
                Val: 40,
            },
            Right: &TreeNode{
                Val: 50,
                Left: &TreeNode{
                    Val: 70,
                },
                Right: &TreeNode{
                    Val: 80,
                },
            },
        },
        Right: &TreeNode{
            Val: 30,
            Right: &TreeNode{
                Val: 60,
            },
        },
    }

    res := heightOfTree(root)
    fmt.Println(res)
}

func heightOfTree(root *TreeNode) int {
    if root == nil {
        return 0
    }
    leftH := heightOfTree(root.Left) + 1
    rightH := heightOfTree(root.Right) + 1

    if leftH < rightH {
        return rightH
    }
    return leftH
}