Python实现二叉树的最小深度的两种方法
2019-09-30 15:04
2481 查看
找到给定二叉树的最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
注意:叶子节点没有子树
Example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its minimum depth = 2.
1:算法遍历二叉树每一层,一旦发现某层的某个结点无子树,就返回该层的深度,这个深度就是该二叉树的最小深度
def minDepth(self, root): """ :type root: TreeNode :rtype: int """ if not root: return 0 curLevelNodeList = [root] minLen = 1 while curLevelNodeList is not []: tempNodeList = [] for node in curLevelNodeList: if not node.left and not node.right: return minLen if node.left is not None: tempNodeList.append(node.left) if node.right is not None: tempNodeList.append(node.right) curLevelNodeList = tempNodeList minLen += 1 return minLen
2:用递归解决该题和"二叉树的最大深度"略有不同。主要区别在于对“结点只存在一棵子树”这种情况的处理,在这种情况下最小深度存在的路径肯定包括该棵子树上的结点
def minDepth(self, root): """ :type root: TreeNode :rtype: int """ if not root: return 0 if not root.left and root.right is not None: return self.minDepth(root.right)+1 if root.left is not None and not root.right: return self.minDepth(root.left)+1 left = self.minDepth(root.left)+1 right = self.minDepth(root.right)+1 return min(left,right)
算法题来自:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/description/
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- python 获取本机ip地址的两种实现方法
- PHP实现二叉树的深度优先与广度优先遍历方法
- python实现单例的两种方法
- 二叉树先序遍历非递归方法的两种实现
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- Python实现斐波那契数列的两种方法
- 【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
- python实现:求一个整数中的二进制1的个数的两种实现方法
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 两种方法实现Python二分查找算法
- Leetcode 111 python 二叉树的最小深度
- 旋转数组的最小数字,实现斐波那契数列(递归和递推两种方法),跳台阶,加强版跳台阶
- Python实现二叉树结构与进行二叉树遍历的方法详解
- python实现读取并显示图片的两种方法
- 二叉树的最大深度和最小深度实现
- 构造一个特殊栈,实现方法getmin,返回栈中的最小元素 Python版
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- Python实现列表去重的两种方法
- Python实现阶乘函数的两种方法
- python实现二叉树的广度优先遍历和深度优先遍历