如何获得html树的最大深度?

时间:2010-01-31 22:25:27

标签: xpath tree

说我有一个通过Nokogiri解析的html页面。

我怎样才能找到树的最大深度?我是否遍历每个元素并计算它有多少祖先?有更有效的方法吗?

2 个答案:

答案 0 :(得分:1)

屁股比尔K说,你需要自己做一些搜索。您可以做的是通过仅查看叶节点(即具有空子轴的节点)来减少搜索集:

//*[count(child::*) = 0]

然后,您可以迭代该表达式返回的所有节点并执行

count(ancestor::*)

...找到达到最大值的节点。

答案 1 :(得分:0)

你必须触摸每个元素,但不要将父母视为第二个动作,将这部分重复在它们之上。

每次进入关卡时,都会增加一个深度变量。

当你升级时,将当前深度与保存的“Deepest”变量进行比较。如果它更大,则替换“最深”变量。

当然,当你上升一个等级时,你也会减少深度变量......

这可以很容易地使用一个递归方法在函数上编写,该方法接收Node并返回最深的。

int maxDepth(Node node)
    int max=0;
    for each child of node
        thisMax=maxDepth(child)
        if(max < thisMax)
            max=thisMax
    return max+1

(这是极少数情况下你可以编写递归函数而不分离终止子句的情况之一)