二叉树的最大深度

24 阅读1分钟

二叉树的最大深度

思路:递归思想,最简单

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

方法二,树的层序遍历

func maxDepth(root *TreeNode) int {
	depth := 0
	queue := []*TreeNode{root}
	for len(queue) > 0 {
		size := len(queue)
		for size > 0 {
			//出队一个节点,出队时注意,先出前面的元素
			head:=queue[0]
			queue = queue[1:]
			if head.Left!=nil{
				queue=append(queue,head.Left)
			}
			if head.Right!=nil{
				queue=append(queue,head.Right)
			}
			size--
		}
		depth++
	}
	return depth
}