給定一棵二叉樹,找出樹中兩個給定節點的最低公共祖先(lca
)。
根據wikipedia
對lca
的定義:「在兩個節點p
和q
之間定義的最低公共祖先是t
中同時具有p
和q
作為後代的最低節點(在這裡,我們允許乙個節點作為其自身的後代)。」
與找二叉搜尋樹的最近公共祖先類似,如果乙個節點的左子樹上有與p或q相等的節點且右子樹上有與p或q相等的節點,說明此時該節點即為最近公共節點
**:
public treenode lowestcommonancestor
(treenode root, treenode p, treenode q)
else
if(right == null)
//左右均有,說明該節點即為最近公共祖先
return root;
}
二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 思路 剛開始使用boolean來判斷要查詢的兩節點在左右孩子上,後面修改為使用treenode與null判斷兩節點位置 1 分別向左孩子和右孩子遞迴。2 若當...
二叉樹的最近公共祖先
輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 4 輸出 5 法1 分別找出根節點到兩個節點的路徑,則最後乙個公共節點就是最低公共祖先。法2 public treen...
二叉樹的最近公共祖先
例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節點 1 的最近公共祖先是節點 3。示例 2 輸入 root 3,5,1,6,2,0,...