leetcode-111 二叉树的最大(最小深度)
leetcode-111 二叉树的最大(最小深度)
二叉树的最小深度,指的是从根节点到最近叶子节点最短路径的节点数量
二叉树的最大深度,指的是从根节点到最远叶子节点的最长路径的节点数量
解决方法:
使用递归的方法,从叶子节点开始累加,
对于二叉树的最小深度,当一个节点的左子树为空时,最小深度为其右子树的最小深度加一,当其右子树为空时,最小深度为左子树的最小深度加一。当一个节点为空时,返回0
对于二叉树的最大深度,当一个节点为空时,返回0,当一个节点不为空时,递归计算两个子树的深度,取最大值
Code:
class Solution:
def minDepth(self, root: TreeNode) -> int:
if root==None:
return 0
if not root.left:
return self.minDepth(root.right)+1
if not root.right:
return self.minDepth(root.left)+1
return min(self.minDepth(root.left),self.minDepth(root.right))+1
def maxDepth(self,root:TreeNode)->int:
if not root:
return 0
else:
return max(self.maxDepth(root.left),self.maxDepth(root.right))+1
#第二种
def maxDepth(self, root: TreeNode) -> int:
return self.trav(root)
def trav(self,root: TreeNode):
if root==None:
return 0
len_left=self.trav(root.left)
len_right=self.trav(root.right)
return len_left+1 if(len_left>len_right) else len_right+1