二叉树深度


节点定义:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

1. 递归

树的深度 = 左子树的深度与右子树的深度的最大值 + 1

def maxDepth(root: Optional[TreeNode]) -> int:
        if not root: 
            return 0
        return max(maxDepth(root.left), maxDepth(root.right)) + 1

2. 遍历

按层遍历树,将每层的节点数据放置在列队中并不断更新,直到列队为空(无叶子节点)

def maxDepth(root: Optional[TreeNode]) -> int:
    if not root:
        return 0
    queue = [root]
    res = 0
    while queue:
        tmp = []
        for node in queue:
            if node.left:
                tmp.append(node.left)
            if node.right:
                tmp.append(node.right)
        queue = tmp
        res += 1
    return res

0 条评论

发表评论

暂无评论,欢迎发表您的观点!