給一棵二叉樹和二叉樹中的兩個節點,找到這兩個節點的最近公共祖先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 隨機跳轉到兩個標籤中的...