樹中兩個節點的最低公共祖先

2021-09-16 14:16:44 字數 823 閱讀 5609

假設是二叉搜尋樹(二叉搜尋樹是乙個排序的二叉樹,左子樹的結點小於根結點,右子樹的結點大於根結點),

故找到乙個結點,使其大於左子結點小於右子結點即可。

public static treenode getlastcommonnode(treenode root, treenode p, treenode q)
則可轉化為兩個指向root的單鏈表求第乙個公共節點

1.用棧

2.先找出2個鍊錶的長度,然後讓長的先走兩個鍊錶的長度差,然後再一起走,直到找到第乙個公共結點。

**略
遞迴遍歷找到所給定的兩個結點,然後向上標記,直到有乙個結點的左子結點和右子結點都不為空返回即可

public static treenode getlastcommonnode3(treenode root, treenode p, treenode q)
需要我們儲存下由root根節點到p和q節點的路徑,並且將路徑存入list中,則問題轉化為求兩個list集合的最後乙個共同元素。

public static treenode getlastcommonnode4(treenode proot, treenode p, treenode q) 

return res;

} private static boolean getpath(treenode proot, treenode n, listpath)

if(proot.right != null)

return false;

}

樹中兩個節點的最低公共祖先

首先想一下 一.如果是搜尋二叉樹的話 可以採用遞迴的方式 思路 樹的根節點作為尋找的起點,把根節點作為當前節點 1.如果這兩個節點都大於當前節點,那麼這兩個節點的最低祖先肯定在當前節點節點的右子樹中,然後在當前節點的右子樹中找 2.如果兩個節點的都小於當前節點節點,那麼這兩個節點的最低祖先肯定在當前...

樹中兩個節點的最低公共祖先

題目 輸入一棵樹的兩個節點,返回他們的最低公共祖先。當這棵樹是二叉查詢樹時 用遞迴從樹的根節點開始遍歷。private treenode find treenode node1,treenode node2,treenode root if val如果這棵樹只是一顆普通的樹,但是擁有指向父節點的指標...

樹中兩個節點的最低公共祖先

1.二叉查詢樹 對於二叉搜尋樹,公共祖先的值一定大於等於較小的節點,小於等於較大的節點。換言之,在遍歷樹的時候,如果當前結點大於兩個節點,則結果在當前結點的左子樹里,如果當前結點小於兩個節點,則結果在當前節點的右子樹里。public treenode lowestcommonancestor tre...