二叉树的遍历:104.二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

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

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

   3
   / \
  9  20
    /  \
   15   7

1、题目分析

题目比较简单,就是求一个二叉树的最大深度。二叉树的深度是从根节点到叶子节点的最大层数。所以想到两个方法:1、递归的遍历左右两个二叉树;2、采用层次遍历的方法;记录访问的层数,就是二叉树的最大深度。

2、解题分析

  • 递归法
    • max(self.maxDepth(root.left),self.maxDepth(root.right))+1

    • 遍历左右两个子树的最大深度,然后在加上1就是最大深度了

  • 层次遍历
    • 起始就是BFS遍历,不过这次要记录层数
    • 使用size=len(queue)
    • 遍历完一层,加上一个1

3、代码

# 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: TreeNode) -> int:

        if not root:
            return 0

        return  max(self.maxDepth(root.left),self.maxDepth(root.right))+1
        
        if not root:
            return 0
        queue = collections.deque()
        queue.append(root)
        res=0
        while queue:
            size = len(queue)
            
            for i in range(size):
                item = queue.popleft()
                if item.left:
                    queue.append(item.left)
                if item.right:
                    queue.append(item.right)
            res+=1

        return res

递归法遍历图解

二叉树的遍历:104.二叉树的最大深度_第1张图片

 

总结:二叉树不管求解什么,递归法就是简单粗暴,但是有时候不太好想。

你可能感兴趣的:(Leetcode,树,二叉树,数据结构,算法,leetcode,dfs)