【LeetCode 简单题】20-二叉树的最大深度

声明:

今天是第20道题。给定一个二叉树,找出其最大深度,二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个二叉树,找出其最大深度,二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

解法1。使用递归,体现的是深度优先分别计算左右子树的深度,比较后返回最大值,代码如下。

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

class Solution:
    def maxDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        # 这是递归到叶子节点之后没有节点了所以返回给叶子节点0
        if not root:
            return 0
        else:    # 一定要有else语句
            # 算深度时计算的是节点个数,之所以+1是因为需要加上当前层的节点
            left_depth = 1+self.maxDepth(root.left)
            right_depth = 1+self.maxDepth(root.right)
            return max(left_depth,right_depth)

解法2。我没理解……但是能提交成功,就先贴出来吧

class Solution:
    def maxDepth(self, root):

        # V 2.0,能提交
        if root == None:
            return 0

        depth = 0
        q = [root]
        while len(q) != 0:
            depth += 1
            for i in range(0, len(q)):
                if q[0].left:
                    q.append(q[0].left)
                if q[0].right:
                    q.append(q[0].right)
                del q[0]
        return depth

结尾

解法1:https://blog.csdn.net/littlethunder/article/details/23736491

解法2:https://blog.csdn.net/coder_orz/article/details/51337420

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/82733013