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
posted @ 2021-10-16 10:35  流光之中  阅读(38)  评论(0编辑  收藏  举报