leetcode刷题笔记一百一十一题 二叉树的最小深度
leetcode刷题笔记一百一十一题 二叉树的最小深度
源地址:111. 二叉树的最小深度
问题描述:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
/**
本题还是基于递归的思想,需要注意的是题目中对于叶子节点的说明。即没有子结点的结点
所以对当前节点的情况需要进行讨论
若要改为迭代方法, 可以使用两个栈结构将当前结点与其的高度分别压入栈即可
*/
/**
* Definition for a binary tree node.
* class TreeNode(var _value: Int) {
* var value: Int = _value
* var left: TreeNode = null
* var right: TreeNode = null
* }
*/
object Solution {
def minDepth(root: TreeNode): Int = {
//当前结点为null
if (root == null) return 0
//单子树结点,需要考虑单子树的高度
if (root.left == null) return 1 + minDepth(root.right)
if (root.right == null) return 1 + minDepth(root.left)
//双子树结点,考虑两子树的最小深度
return 1 + Math.min(minDepth(root.left), minDepth(root.right))
}
}