面试题55 - I. 二叉树的深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
解题思路:
利用广度优先遍历思想,进行二叉树的层序遍历,每遍历一层深度+1
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxDepth(root *TreeNode) int {
if root ==nil{
return 0
}
// dfs 队列
queue := []*TreeNode{}
deep :=0
queue = append(queue,root)
for len(queue)>0{
// 每次获取一层的结点,deep数量+1
deep += 1
len :=len(queue)
for i:=0; i<len;i++{
top := queue[0]
queue = queue[1:]
if top.Left !=nil{
queue = append(queue, top.Left)
}
if top.Right !=nil{
queue = append(queue, top.Right)
}
}
}
return deep
}