印刷厂网站建设,网站平台建设项目检查汇报材料,移动app做的好的网站,wordpress如何绑定域名题目链接 Leetcode.111 二叉树的最小深度 easy 题目描述
给定一个二叉树#xff0c;找出其最小深度。
最小深度是从 根节点 到 最近叶子节点 的 最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例 1#xff1a; 输入#xff1a;root [3,9,20,null,nul…题目链接 Leetcode.111 二叉树的最小深度 easy 题目描述
给定一个二叉树找出其最小深度。
最小深度是从 根节点 到 最近叶子节点 的 最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例 1 输入root [3,9,20,null,null,15,7] 输出2 示例 2 输入root [2,null,3,null,4,null,5,null,6] 输出5 提示
树中节点数的范围在 [0,105][0, 10^5][0,105] 内−1000Node.val1000-1000 Node.val 1000−1000Node.val1000
解法递归
我们要求的是 叶子结点 到 根结点 的最短路径。
我们设 lll 和 rrr 分别是 当前结点 rootrootroot 的左子节点到根结点的最短路径长度 和 当前结点 rootrootroot 的右子节点到根结点的最短路径长度。
如果 l0l 0l0返回 r1r 1r1如果 r0r 0r0返回 l1l 1l1否则返回 min{l,r}1min\{l , r \} 1min{l,r}1
时间复杂度O(n)O(n)O(n)
C代码
class Solution {
public:int minDepth(TreeNode* root) {if(root nullptr) return 0;int l minDepth(root-left);int r minDepth(root-right);if(l 0) return r 1;else if(r 0) return l 1;return min(l , r) 1;}
};
Python代码 class Solution:def minDepth(self, root: Optional[TreeNode]) - int:if root None:return 0l self.minDepth(root.left)r self.minDepth(root.right)if l 0:return r 1elif r 0:return l 1else:return min(l , r) 1