golang 给一个二叉树,找出它的最大深度

2023-01-29

思路:采用深度优先遍历,对于求整棵树的深度,就是根节点的左子树的深度或者根结点的右子树的深度加1,那么,使用递归的方式就是:

depth(root)=1+max(depth(root.Left),depth(root.Right))

 

二叉树结构体:

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

 

算法:

func maxDepth(root *TreeNode) int {
    if root == nil {
        return 0
    }
    leftDepth := maxDepth(root.Left)
    rightDepth := maxDepth(root.Right)
    if leftDepth >= rightDepth {
        return 1 + leftDepth
    }
    return 1 + rightDepth
}