大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Python怎么实现二叉树的最小深度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联是一家专注于成都网站设计、网站建设与策划设计,钟山网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:钟山等地区。钟山做网站价格咨询:028-86922220找到给定二叉树的最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
注意:叶子节点没有子树
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)
关于“Python怎么实现二叉树的最小深度”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。