剑指刷题-面试题55 - I. 二叉树的深度

这篇博客介绍了如何求解一棵二叉树的深度,提供了两种方法:递归法和层序遍历法。通过递归遍历每个节点或者利用队列进行层次遍历,每次遇到新的层级时增加计数,最终得到树的最大深度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
在这里插入图片描述
解法:
方法一:递归法
在这里插入图片描述

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def maxDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        # 当 root​ 为空,说明已越过叶节点,因此返回 深度 00 
        if not root: return 0
        return max(self.maxDepth(root.left),self.maxDepth(root.right))+1

方法二:层序遍历
每遍历一层,则计数器 +1+1 ,直到遍历完成,则可得到树的深度。

  • queue开始存放root结点,之后新的一轮将tmp中数据放入queue
  • tmp里存放queue中所有结点对应是左右结点
  • 遍历完queue里结点的左右结点之后 dep+=1 queue=tmp
    在这里插入图片描述
class Solution(object):
    def maxDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root: return 0
        # queue tmp里直接存放的是结点TreeNode
        queue=[root]
        dep=0
        while queue:
        # tmp=[] 每次增加左右结点前要清空
            tmp=[]
            for node in queue:
              # 如果没有左右结点就不添加。tmp里就为空复制给queue也为空。就会退出while循环
                if node.left:
                    tmp.append(node.left)
                if node.right:
                    tmp.append(node.right)
            dep+=1
            queue=tmp
        return dep  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值