黄哥Python: LeetCode Minimum Depth of Binary Tree

148 阅读1分钟
原文链接: zhuanlan.zhihu.com

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
}
黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次zhuanlan.zhihu.com图标黄哥:黄哥Python培训是这样训练学员的zhuanlan.zhihu.com图标