LeetCode 111 题,Minimum Depth of Binary Tree 解题思路

1、读题,求解二叉树的最小Depth。
2、用bfs 去解决,队列带上每层的层数。当有一个节点的左右子树都为空时,返回当前层数,就找到解。
Python 代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# 黄哥Python培训 黄哥所写
class Solution:
def minDepth(self, root: TreeNode) -> int:
if root is None:
return 0
def bfs(root):
level = 1
queue = [[root, level]]
while queue:
node, level = queue.pop(0)
if node.left is None and node.right is None:
return level
level += 1
if node.left:
queue.append([node.left, level])
if node.right:
queue.append([node.right, level])
return bfs(root)Go 语言代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
// 黄哥Python培训 黄哥所写
func minDepth(root *TreeNode) int {
if root == nil {
return 0
}
return bfs(root)
}
type Level struct {
node *TreeNode
level int
}
func bfs(root *TreeNode) int {
queue := []Level{Level{node:root, level: 1}}
for len(queue) > 0 {
node, level := queue[0].node, queue[0].level
queue = queue[1:]
if node.Left == nil && node.Right == nil {
return level
}
level++
if node.Left != nil {
queue = append(queue, Level{node.Left, level})
}
if node.Right != nil {
queue = append(queue, Level{node.Right, level})
}
}
return 0
}