【发布时间】:2020-02-23 22:44:12
【问题描述】:
我正在尝试查找最大等级节点和深度。这是我的代码。
import pygraphviz as pgv
class Test:
def __init__(self):
self.G = pgv.AGraph(directed=True)
self.G.add_node('a')
self.G.add_node('b')
self.G.add_node('c')
self.G.add_node('d')
self.G.add_node('e')
self.G.add_node('f')
self.G.add_edge('a', 'b')
self.G.add_edge('b', 'c')
self.G.add_edge('b', 'd')
self.G.add_edge('d', 'e')
self.G.add_edge('e', 'f')
print(self.G.string())
self.find_max_rank_node()
def find_max_rank_node(self):
nodes = self.G.nodes()
depth = 0
for n in nodes:
layer1 = self.G.successors(n)
if layer1:
depth = depth + 1
for layer_one in layer1:
layer2 = self.G.successors(layer_one)
print(n, layer2)
if __name__ == '__main__': Test()
输出应该是f 和4。我开始编写代码,但意识到我不知道分支的深度......而且我不确定如何编写循环。
【问题讨论】:
-
一个澄清问题,如果根是“a”,“f”的深度是 4。是在搜索函数中定义根还是先找到根/源,再计算深度?
-
@pastaleg 是的。那是正确的。假设您从
a开始。遇到树枝时需要一个通用的解决方案。
标签: python loops search binary-search-tree pygraphviz