假设我有一个AST结构(列表列表),如下所示:
[+, [*, a,b],[*,c,d] ]
[+, [*, a,b],[*,c,[ +, d, e] ] ]
计算结构深度的最简单和/或最快方法是什么,即它的层数是多少?
作为第二个选项,您也可以将其作为String使用,而不是List-of-Lists(LoL)。 F.e:
"[+, [*, a,b],[*,c,d] ]"
我可以同时使用它们。
答案 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)
同样需要注意的是,如果您的数据可能包含'['
或']'
,则会中断。
在这种情况下,您需要为这些方括号定义转义方法。