计算结构深度的最简单方法是什么?

时间:2017-09-04 19:33:05

标签: python data-structures abstract-syntax-tree

假设我有一个AST结构(列表列表),如下所示:

 [+, [*, a,b],[*,c,d] ]
 [+, [*, a,b],[*,c,[ +, d, e] ] ]

计算结构深度的最简单和/或最快方法是什么,即它的层数是多少?

作为第二个选项,您也可以将其作为String使用,而不是List-of-Lists(LoL)。 F.e:

"[+, [*, a,b],[*,c,d] ]"

我可以同时使用它们。

1 个答案:

答案 0 :(得分:3)

您可以保留方括号的数量。 您可以找到更详细的解释here。 以下是代码的改编:

string = str(tree)

currentDepth = 0
maxDepth = 0
for c in string:
    if c == '[':
        currentDepth += 1
    elif c == ']':
        currentDepth -= 1

    maxDepth = max(maxDepth, currentDepth)

同样需要注意的是,如果您的数据可能包含'['']',则会中断。 在这种情况下,您需要为这些方括号定义转义方法。