美文网首页
树6,例题二叉树的最大、最小深度

树6,例题二叉树的最大、最小深度

作者: 小碧小琳 | 来源:发表于2018-08-01 21:07 被阅读0次

都是用DFS来解决,提到DFS,很自然的想到用递归做

一、Maximum Depth of Binary Tree

参考Maximum Depth of Binary Tree

  • 递归结束条件:
    输入节点为None时,直接返回0,表示此节点向下深度是0
  • 递归更改条件:
    每次深度往下搜索一个子节点时,深度都需要加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):
        if root == None:
            return 0
        else:
            return max(self.maxDepth(root.right)+1,self.maxDepth(root.left)+1)

二、Minimum Depth of Binary Tree

在二叉树的功能测试中,经常会有这样的测试样例:没有分叉,一条路走到黑的树。
比如一条树从头到尾只有左子节点,如果直接把上述的代码中max改为min,那么就会在一开始对右子节点进行递归调用时返回0,而其实,对于这种特殊情况右子节点是压根不能考虑的。

因此在一开始,需要判断这个树的根节点没有子节点,只有一个子节点,有两个子节点的情况。

这是最短路径长度的代码

class Solution:
    def minDepth(self, root):
        if root == None:
            return 0
        if root.left ==None and root.right ==None:
            return 1
        elif root.left == None:#左子节点为空,父节点需要向右子节点走,一直走到叶节点
            return self.minDepth(root.right) + 1
        elif root.right == None:
            return self.minDepth(root.left) + 1
        else:
            return min(self.minDepth(root.right),self.minDepth(root.left))+1

相关文章

  • 二叉树面试题基本问题

    二叉树的最大深度与最小深度 二叉树的最大深度 最大深度是指二叉树根节点到该树叶子节点的最大路径长度。而最小深度自然...

  • LeetCode 深度优先遍历

    概述 前言 104 二叉树的最大深度【简单】 111 二叉树的最小深度 【简单】 124 二叉树中的最大路径和 【...

  • 树6,例题二叉树的最大、最小深度

    都是用DFS来解决,提到DFS,很自然的想到用递归做 一、Maximum Depth of Binary Tree...

  • 111. Minimum Depth of Binary Tre

    题目 给定一个二叉树,求二叉树最小深度 解析 一个二叉树的最小深度,就是求左子树最小深度或者右子树最小深度,然后加...

  • 二叉树

    深度优先遍历 递归 DFS 广度优先遍历 递归BFS 二叉树的最大最小深度 判断二叉树是否中轴对称

  • 树的深度

    计算一颗二叉树的最大深度和最小深度public int maxDepth(TreeNode root){if(ro...

  • 二叉树的最大/最小深度

    给定如下二叉树, 分别返回其最大深度4, 最小深度2。 求最大深度 按照广度遍历 跟层级遍历类似,最后返回总数组的...

  • 二叉树数据结构及其算法操作(Java)

    二叉树的定义 向二叉树中插入节点 搜索二叉树中最大值和最小值 搜索二叉树的深度(height)和节点数(size)...

  • 树Tree

    节点类 二叉树前、中、后、按层遍历 二叉搜索树 最大、最小深度

  • Swift - LeetCode - 二叉树的最小深度

    题目 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。...

网友评论

      本文标题:树6,例题二叉树的最大、最小深度

      本文链接:https://www.haomeiwen.com/subject/esllvftx.html