least-common-ancestor

    0熱度

    2回答

    我正在嘗試獲取樹中兩個節點的最不共同的祖先。我試過了,但問題是if one node is the descendant node for other我無法獲得LCA。 我試着解決它,然後它只爲後代節點工作。不知道如何繼續這個。 Node* Tree::LCA(Node* root, Node* n1, Node* n2) { list<Node*> a1,a2; while

    0熱度

    1回答

    我正在尋找一個非遞歸算法版本,用Java編寫的查找排序二叉樹中最不常見的祖先。 我發現的一切只是遞歸版本,在這裏在Stackoverflow和其他網站。 有人可以寫或指引我的非遞歸版本(使用while循環)? 如果這個版本在時間複雜性方面更高效,那麼還要寫出來?

    10熱度

    1回答

    因此,我讀了this RMQ(範圍最小查詢)的TopCoder教程,我得到了一個很大的問題。 在那裏他介紹了 approach的部分,有什麼我能理解到現在爲止是這樣的: (整個逼近實際使用的方法在Sparse Table (ST) Algorithm介紹,Reduction from LCA to RMQ和from RMQ to LCA) 給定一個數組A [N],我們需要將它轉換爲笛卡爾樹,從而使

    1熱度

    2回答

    我有這段代碼可以找到binary tree中兩個nodes的least common Ancestor。我認爲時間複雜度是O(log n)。但需要專家意見。這段代碼在我的輸入上工作得很好,但我不確定我是否已經詳盡地進行了測試。 這裏是代碼 //LCA of Binary tree public static Node LCABT(Node root, int v1, int v2){

    0熱度

    2回答

    這個問題可能有很多人問過,但它有點不同。我們有一棵二叉樹。並給你兩個節點p& q。我們必須找到最不共同的家長。但是你沒有指向根的根節點指針。爲您提供兩種內置功能: 1)BOOL same(node *p, node *q); - >如果節點相同或不相等,則返回true。 2)node* parentNode(node *c); - >返回當前節點的父節點。 如果節點c實際上是root,那麼pare

    3熱度

    1回答

    我有這個代碼,它計算Least common Ancestor給定的兩個nodes在Binary tree。 目前,它假定兩個節點都存在。我可以編寫一個輔助方法來檢查節點是否存在,然後調用LCABT方法。這將需要遍歷樹兩次。我想知道是否有一種方法來檢查和處理當我的當前代碼不存在節點時。 //LCA of Binary tree public static Node LCABT(Nod

    1熱度

    1回答

    目前,我正在研究一個程序,其中一個步驟是檢查葉子c是否與另外兩個葉子在相同的子樹中a和b在二叉樹T中。我目前的方法如下:首先,找到T中每對葉子的LCA,並將其存儲在字典中。然後,對於樹中的每個節點,查找所有樹葉的後代,並將其存儲在字典中。然後,當我需要確定c是否與a和b在同一子樹中時,我找到a和b的LCA,並檢查c是它的後代。 我需要爲許多不同的對a和b運行此步驟,並且在具有多達600個葉子的二叉

    -3熱度

    3回答

    首先,我並不陌生於C或C++。不過,我目前正在Mac Yosemite上使用C++。我只是試圖編寫一個遞歸函數來返回兩個節點的共同祖先,這些節點由其關鍵(數據)變量標識。邏輯很簡單,遍歷樹直到兩個節點都在同一個分支中,這些節點發散的節點是共同的祖先。有了這個想法,我想出了以下代碼: Node * commonAncestor(Node *n, int left_elem, int right_el

    1熱度

    1回答

    在考慮寫一個函數來實現它之前,我試着想一個算法。 h被表示爲主父節點與給定節點之間的最大距離。它應該運行在o(h^2)這意味着它應該更容易提出這樣一個算法,但我經常發現自己與o(h)算法。當談到了解我是否真的在做h^2操作時,我也感到困惑。我真的可以用鉛。

    2熱度

    2回答

    我提出以下問題在面試: 給出一個根節點(到井形成二叉樹)和其他兩個節點(這是保證在樹上,並且也不同) ,返回兩個節點的最低共同祖先。 我不知道任何最不常見的祖先算法,所以我試圖在現場製作一個。我公司生產的以下代碼: def least_common_ancestor(root, a, b): lca = [None] def check_subtree(subtree, lca