考慮用遞迴函式的思路來做:
treenode* lowestcommonancestor(treenode* root, treenode* p, treenode* q)
這個函式從root為根節點的二叉樹,尋找p和q的最近公共祖先,如果最近公共祖先存在返回root
class solution
};
當我們用遞迴去做這個題時不要被題目誤導,應該要明確一點
這個函式的功能有三個:給定兩個節點 pp 和 qq
如果 pp 和 qq 都存在,則返回它們的公共祖先;
如果只存在乙個,則返回存在的乙個;
如果 pp 和 qq 都不存在,則返回null
本題說給定的兩個節點都存在,那自然還是能用上面的函式來解決
九章演算法 微軟面試題 最近公共祖先 II
給一棵二叉樹和二叉樹中的兩個節點,找到這兩個節點的最近公共祖先 lca 兩個節點的最近公共祖先,是指兩個節點的所有父親節點中 包括這兩個節點 離這兩個節點最近的公共的節點。每個節點除了左右兒子指標以外,還包含乙個父親指標 parent 指向自己的父親。lintcode 領扣 樣例 1 輸入 3,5 ...
C 高頻面試題
malloc free是c語言的標準庫函式,new delete是c 的運算子。由於malloc free是庫函式而不是運算子,不在編譯器控制許可權之內。對於使用者自定義的物件而言,用maloc free無法滿足動態管理物件的要求。廢話 new是型別安全的,malloc不是。int a new fl...
C 高頻面試題
字首式可以返回物件的引用,而字尾式必須返回物件的值所以導致在大物件產生時產生了較大的複製開銷,因此處理自定義型別的時候盡量使用字首式。a b b a a b 相對於c,c 多了過載 內聯函式 異常處理,擴充套件了物件導向的設計內容 類 繼承 虛函式 模板。c 並不是完全的物件導向,它也可以寫出面向過...