2010-01-31 73 views

回答

0

您必須觸摸每個元素,但不要將父母視爲第二個操作,請將其作爲迭代的一部分。

每當您降低關卡時,都會增加一個深度變量。

當您上升一層時,將您當前的深度與保存的「最深」變量進行比較。如果更大,請更換「最深」變量。

當然,當你去了一個級別,你還遞減深度變量...

這可以很容易地與需要節點並返回最深的一個遞歸方法寫的功能。

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

(這是罕見的情況下,你可以寫一個遞歸函數沒有分離出終止條款之一)

1

屁股比爾ķ說,你需要做一些搜索自己。你可以做的是減少搜索只看着葉節點設置中,有一個空的子即節點軸:

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

然後,您可以遍歷所有由表達式返回的節點,做

count(ancestor::*) 

...並找到達到最大值的節點。