題目:有個二叉樹,還有倆節點,如何找得到,最近的祖先
輸入: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...