我正在嘗試獲取樹中兩個節點的最不共同的祖先。我試過了,但問題是if one node is the descendant node for other我無法獲得LCA。 我試着解決它,然後它只爲後代節點工作。不知道如何繼續這個。 Node* Tree::LCA(Node* root, Node* n1, Node* n2) {
list<Node*> a1,a2;
while
我有這段代碼可以找到binary tree中兩個nodes的least common Ancestor。我認爲時間複雜度是O(log n)。但需要專家意見。這段代碼在我的輸入上工作得很好,但我不確定我是否已經詳盡地進行了測試。 這裏是代碼 //LCA of Binary tree
public static Node LCABT(Node root, int v1, int v2){
我有這個代碼,它計算Least common Ancestor給定的兩個nodes在Binary tree。 目前,它假定兩個節點都存在。我可以編寫一個輔助方法來檢查節點是否存在,然後調用LCABT方法。這將需要遍歷樹兩次。我想知道是否有一種方法來檢查和處理當我的當前代碼不存在節點時。 //LCA of Binary tree
public static Node LCABT(Nod
首先,我並不陌生於C或C++。不過,我目前正在Mac Yosemite上使用C++。我只是試圖編寫一個遞歸函數來返回兩個節點的共同祖先,這些節點由其關鍵(數據)變量標識。邏輯很簡單,遍歷樹直到兩個節點都在同一個分支中,這些節點發散的節點是共同的祖先。有了這個想法,我想出了以下代碼: Node * commonAncestor(Node *n, int left_elem, int right_el