二叉搜尋樹的最近公共祖先 Java

2021-09-12 18:19:33 字數 680 閱讀 3565

給定二叉搜尋樹(bst),找到bst中兩個給定節點的最低公共祖先(lca)。

根據wikipedia對lca的定義:「在兩個節點p和q之間定義的最低公共祖先是t中同時具有p和q作為後代的最低節點(在這裡,我們允許乙個節點作為其自身的後代)。」

迭代實現

由於二叉搜尋樹是有序的,左子樹的所有節點均小於根節點,右子樹的所有節點均大於根節點,所以當某個時刻,根節點的值大於p而小於q,說明此時的根節點即為最近公共祖先。

**:

public treenode lowestcommonancestor(treenode root, treenode p, treenode q) else if(root.val < p.val && root.val < q.val)else 

}return null;

}

遞迴實現

原理和1一樣

**:

public treenode lowestcommonancestor(treenode root, treenode p, treenode q) else if(p.val > root.val && q.val > root.val)else 

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

return root;

}

二叉搜尋樹的最近公共祖先

給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最近公共祖先...

二叉搜尋樹的最近公共祖先

給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最近公共祖先...

二叉搜尋樹的最近公共祖先

例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最近公共祖先是 6。示例 2 輸入 root 6,2,8,0,4,7,...