【leetcode】111. Minimum Depth of Binary Tree(Python & C++)
来源:互联网 发布:淘宝roi什么意思 编辑:程序博客网 时间:2024/05/16 10:37
111. Minimum Depth of Binary Tree
题目链接
111.1 题目描述:
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
111.2 解题思路:
思路一:递归。如果当前节点为空,则返回0;如果当前节点的左右子节点都为空,则返回1;如果左节点为空,右节点不空,则返回1+进入右节点深度计算;如果右节点为空,左节点不空,则返回1+进入左节点深度计算;如果左右节点都不空,则分别进入左右节点深度计算,并返回1+较小深度的那个。
思路二:同思路一差不多,进行了优化。如果当前节点为空,则返回0;计算右节点深度和左节点深度;如果左节点为空,返回1+右节点深度;如果右节点为空,返回1+左节点深度。最后返回1+较少深度的那个。
思路三:同思路二差不多,但是超时了。如果当前节点为空,则返回0;如果左节点为空,返回1+右节点深度;如果右节点为空,返回1+左节点深度。最后返回1+较少深度的那个(这里又递归计算了一遍,存在时间浪费)。
111.3 C++代码:
1、思路一代码(6ms):
class Solution108 {public: int subdepth(TreeNode *p) { int dep = 1; if (p->left == NULL && p->right == NULL) return 1; else if (p->left == NULL && p->right != NULL) return dep + subdepth(p->right); else if (p->left != NULL && p->right == NULL) return dep + subdepth(p->left); else { int dleft = dep + subdepth(p->left); int dright = dep + subdepth(p->right); return dleft < dright ? dleft : dright; } } int minDepth(TreeNode* root) { if (root == NULL) return 0; return subdepth(root); }};
2、思路二代码(6ms):
lass Solution108_1 {public: int minDepth(TreeNode* root) { if (root == NULL) return 0; int dl=minDepth(root->left); int dr=minDepth(root->right); if (dl == 0) return dr + 1; if (dr == 0) return dl + 1; return dl < dr ? dl+1 : dr+1; }};
3、思路三代码(超时)
class Solution108_2 {//超时public: int minDepth(TreeNode* root) { if (root == NULL) return 0; if (root->left == NULL) return 1 + minDepth(root->right); if (root->right == NULL) return 1 + minDepth(root->left); return minDepth(root->left)<minDepth(root->right) ? minDepth(root->left)+1 : minDepth(root->right)+1; }};
111.4 Python代码:
2、思路二代码(79ms)
class Solution(object): def minDepth(self, root): """ :type root: TreeNode :rtype: int """ if root==None: return 0 dl=self.minDepth(root.left) dr=self.minDepth(root.right) if dl==0: return 1+dr if dr==0: return 1+dl return 1+min(dl,dr)
阅读全文
0 0
- 【leetcode】111. Minimum Depth of Binary Tree(Python & C++)
- 【Leetcode】【python】Minimum Depth of Binary Tree
- [leetcode: Python] 111. Minimum Depth of Binary Tree
- LeetCode 111. Minimum Depth of Binary Tree
- [LeetCode]111.Minimum Depth of Binary Tree
- 【LeetCode】111.Minimum Depth of Binary Tree
- [Leetcode] 111. Minimum Depth of Binary Tree
- [leetcode] 111. Minimum Depth of Binary Tree
- 111. Minimum Depth of Binary Tree LeetCode
- 【LeetCode】111. Minimum Depth of Binary Tree
- LeetCode *** 111. Minimum Depth of Binary Tree
- LeetCode 111. Minimum Depth of Binary Tree
- leetcode-111. Minimum Depth of Binary Tree
- LeetCode-111.Minimum Depth of Binary Tree
- LeetCode 111.Minimum Depth of Binary Tree
- Leetcode 111. Minimum Depth of Binary Tree
- [leetcode]111.Minimum Depth of Binary Tree
- 111.[Leetcode]Minimum Depth of Binary Tree
- tomcat下多项目的域名配置
- Java 泛型详解
- Maven 项目整合pom.xml整合问题
- Spring框架IOC,DI概念理解
- 关于数据查询优化
- 【leetcode】111. Minimum Depth of Binary Tree(Python & C++)
- 个人学习日志-------爬虫
- 2017年中——很庆幸,我还在路上
- Eclipse的Web开发环境搭建——从零开始入门介绍
- Node.js Stream流
- 1012. 数字分类 (20)
- 用O(1)时间,删除一个链表节点(3)
- 可靠免费的天气接口
- 20170831