首页 > 解决方案 > 在python中查找NOT BINARY TREEE的高度和深度

问题描述

我知道如何为二叉树做到这一点,但不知道标准树。

这效果不好,我不明白出了什么问题。

类节点:

 def __init__(self,V):
     self.id=V
     self.f=[]


def height(n):
    if n==None:
       return -1

    if n.f==None:
        return 0

    for x in n.f:
        return height(x)+1

感谢您的帮助。

标签: pythonrecursiontree

解决方案


您不想在 for 循环中返回:

for x in n.f:
    return height(x)+1

那只会看一个项目并返回。而是找到孩子身高的最大值:

class Node:
    def __init__(self,V):
        self.id = V
        self.f = []

    def height(self):
        if len(self.f) == 0:
            return 1
        return max(x.height() + 1 for x in self.f)

n = Node(1)
n.f = [Node(10), Node(11), Node(12)]
n.f[0].f = [Node(20)]

n.height()
# 3

推荐阅读