python中二叉树的最大深度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中二叉树的最大深度相关的知识,希望对你有一定的参考价值。

我从二叉树创建了一个元组,它看起来像这样:

元组=(1,(2,(4,5,6),(7,无,8)),(3,9,(10,11,12)))

通过应用缩进,树结构变得更加清晰:

 (1,  
    (2,
        (4,
            5,
            6
        ),
        (7,
            None,
            8
        )
    ),
    (3,
        9,
        (10,
            11,
            12
        )
    )
)

我知道如何使用递归方法找到二叉树的最大深度,但我试图使用我创建的元组找到最大深度。任何人都可以帮我怎么做?

答案

递归方法:

a = (1,(2,(4,5,6),(7,None,8)),(3,9,(10,11,12)));

def depth(x):
    if(isinstance(x, int) or x == None):
        return 1;
    else:
        dL = depth(x[1]);
        dR = depth(x[2]);
        return max(dL, dR) + 1;

print(depth(a));

想法是通过查看树的左右子树来确定树的深度。如果节点没有子树,则返回深度1。否则它返回max(右边深度,左边深度)+ 1

另一答案

如果数据结构的任何元素都不是包含'('')'的字符串,那么这是一个棘手而有效的解决方案。我会将元组转换为字符串,并解析它以计算括号的深度。

string = str(myTuple)

currentDepth = 0
maxDepth = 0
for c in string:
    if c == '(':
        currentDepth += 1
    elif c == ')':
        currentDepth -= 1

    maxDepth = max(maxDepth, currentDepth)

它给出了元组中转换元组的字符数的线性时间深度。这个数字应该或多或少地与元素数加上深度成正比,所以你的复杂度有点等于O(n + d)

另一答案
class Node(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
   def maxDepth(self, root):
      if not root:
          return 0
      ldepth = self.maxDepth(root.left)
      rdepth = self.maxDepth(root.right)
      return max(ldepth, rdepth) + 1

以上是关于python中二叉树的最大深度的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第104题—二叉树的最大深度—Python实现

代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

Leetcode刷题Python104. 二叉树的最大深度

Leetcode练习(Python):树类:第104题:二叉树的最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点

LeetCode:104. 二叉树的最大深度(python3,javaScript)

代码题— 二叉树的深度