高頻演算法面試題學習總結 樹形結構2 共同祖先

2021-09-10 19:23:31 字數 1001 閱讀 8461

題目:有個二叉樹,還有倆節點,如何找得到,最近的祖先

輸入:root =

value1 = 5

value2 = 6

解釋: 1

/ \2 3

/\ /\

null 4 5 6

root對應的是乙個樹形結構,­-1代表null,正整數代表這個節點的值,每個節點的值全域性唯一。

輸出:3

思路1:對二叉樹進行dfs遍歷,記錄每個節點為根的子樹有幾個value記為ct,可能的返回值為0,1,2;找到返回值ct==2的最深的節點即為所求。如圖1所示。此方法也可用於多個節點求最近祖先。

思路2:思路1的返回值是乙個pair,包括value與ct。做進一步優化,只返回value:如圖2,對於每個節點有左子樹返回值left,右子樹返回值right,及自身值self,這三個值中有乙個與value匹配,則返回匹配值,有兩個匹配,則返回節點自身值,若沒有匹配則返回-1。

**實現:

#include#includeusing namespace std;

int findancestor(vector& root, int value1, int value2,int rt)

int main()

); int value1 = 3;

int value2 = 2;

cout << findancestor(root, value1, value2, 0) << endl;

return 0;

}

箴言錄

凡事預則立,不預則廢。

MyBatis高頻面試題總結

什麼是sql注入?sql注入 sqli 是一種注入攻擊,可以執行惡意sql語句。它通過將任意sql 插入資料庫查詢,使攻擊者能夠完全控制web應用程式後面的資料庫伺服器。攻擊者可以使用sql注入漏洞繞過應用程式安全措施 可以繞過網頁或web應用程式的身份驗證和授權,並檢索整個sql資料庫的內容 還可...

高頻演算法面試題學習總結 線性結構1 兩數之和

題目 有乙個整數陣列nums,能否從中取出兩個數,使他們的和為target。輸入1 nums target 12 輸出1 true 輸入2 nums target 8 輸出2 false首先由給出的輸入輸出案例,可知取出的兩個數不能為同乙個數 不放回取數 其次整數陣列nums是否有序是不確定的 最後...

C 高頻面試題

malloc free是c語言的標準庫函式,new delete是c 的運算子。由於malloc free是庫函式而不是運算子,不在編譯器控制許可權之內。對於使用者自定義的物件而言,用maloc free無法滿足動態管理物件的要求。廢話 new是型別安全的,malloc不是。int a new fl...