Tree 最低公共祖先系列

2021-08-04 03:15:40 字數 893 閱讀 3686

原題目

在bst中的特殊形式使得假如出現了乙個數比其中乙個小,比另乙個大就是復合題意了。不可能出現還有另外的情況。

public treenode lowestcommonancestor(treenode node, treenode p, treenode q) else

if(root.val>p.val&&root.val>q.val)else

if(root.valreturn lowestcommonancestor(root.right,p,q);

}return node;

}

這裡還要考慮的應該是給的兩個節點的相對大小,我認為為了健壯性應該要自己先比較一下確認大小

原題目

假如當前的節點為正常節點,我的左子樹找到了乙個結果,事實上這個結果只能是p,q之一。倘若此時右子樹什麼都沒有找到的話就是左子樹的結果作為結果了。假如右子樹也找到了乙個結果,同樣只能是p,q之一,那麼 此時的當前節點就是我們尋找的最低公共祖先。

public treenode lowestcommonancestor(treenode root, treenode p, treenode q) 

if (root == p || root == q)

treenode left = lowestcommonancestor(root.left, p, q);

treenode right = lowestcommonancestor(root.right, p, q);

if (left != null && right != null) else

}

最低公共祖先

二叉樹結點的定義如下 cpp view plain copy struct node 給定二叉樹中的兩個結點,輸出這兩個結點的最低公共祖先結點 lca 注意,該二叉樹不一定是二叉搜尋樹。比如給定的二叉樹如下所示,則可以知道結點1和5的最低公共祖先結點為5,結點4和5的最低公共祖先結點為5。3 5 1...

最低公共祖先

對於樹中兩個節點而言,最低公共祖先lca其實就是該節點左邊和右邊分別包含a,b兩個節點。只有a,b分別在其左右子樹中。首先判斷該節點是否非空,空返回null,表示既沒有a,有沒有b 如果該節點本身是a,或者b中的乙個則返回該節點 遞迴的判斷該節點的左右子樹,如果左右子樹都不是返回null,說明左右子...

最低公共祖先問題 鍊錶 樹

兩個鍊錶的第乙個公共節點 可以利用兩個輔助棧實現,也 可以遍歷鍊錶兩次,求節點個數差,長的鍊錶先遍歷,然後同時開始遍歷,找到相同節點 struct listnode listnode firstpublicnode listnode phead1,listnode phead2 while pnod...