九章演算法 微軟面試題 最近公共祖先 II

2021-10-12 07:21:02 字數 666 閱讀 2414

給一棵二叉樹和二叉樹中的兩個節點,找到這兩個節點的最近公共祖先​lca​。

兩個節點的最近公共祖先,是指兩個節點的所有父親節點中(包括這兩個節點),離這兩個節點最近的公共的節點。

每個節點除了左右兒子指標以外,還包含乙個父親指標​parent​,指向自己的父親。

lintcode 領扣

樣例 1:

輸入:,3,5

輸出:4

解釋: 4

/ \3 7

/ \5 6

lca(3, 5) = 4

樣例 2:

輸入:,5,6

輸出:7

解釋: 4

/ \3 7

/ \5 6

lca(5, 6) = 7

public class solution 

// 遍歷b的祖先節點,第乙個在雜湊表**現的即為答案

curr = b;

while (curr != null)

curr = curr.parent;

}return null;

}}

更多題解參考:九章演算法

微軟高頻面試題 最近公共祖先

考慮用遞迴函式的思路來做 treenode lowestcommonancestor treenode root,treenode p,treenode q 這個函式從root為根節點的二叉樹,尋找p和q的最近公共祖先,如果最近公共祖先存在返回root class solution 當我們用遞迴去做...

九章演算法 微軟面試題 公平索引

現在給你兩個長度均為n的整數陣列 a 和 b。當 a 0 a k 1 a k a n 1 b 0 b k 1 和 b k b n 1 四個和值大小相等時,稱索引k是乙個公平索引。也就是說,索引k 可以使得a,b 兩個陣列被分成兩個非空陣列,這四個子陣列的和值相等。例如,陣列a 4,1,0,3 b 2...

九章演算法 蘇州微軟面試題 程式檢查

描述 有一種程式語言,只有以下五種命令,每種命令最多有兩個引數,請檢查給定的程式是否可能無限迴圈。這些命令分別是 label 宣告乙個標籤,引數是乙個字串,且每個標籤只宣告一次。goto 跳轉到乙個標籤,並從標籤處開始按順序執行程式。halt 停機,程式終止。gotorand 隨機跳轉到兩個標籤中的...