劍指offer 樹中兩個節點的最低公共祖先

2021-08-04 12:51:29 字數 1052 閱讀 4720

對於這個問題不同的條件可以有不同的解法

binarytreenode *getlastcommonparent(binarytreenode *proot,binarytreenode *pnode1,binarytreenode *pnode2)

//普通二叉樹,沒有parent指標

//非遞迴的解法

//1.獲取結點所在的路徑,將路徑儲存在煉表裡

bool getnodepath(binarytreenode *proot, binarytreenode *pnode, list

&path)

//2. 尋找兩個鍊錶的公共節點

非遞迴解法:

//遞迴解法

bool findnode(binarytreenode *proot, binarytreenode *pnode)

binarytreenode *getcommonparent1(binarytreenode *proot,binarytreenode *pnode1,binarytreenode *pnode2)

return

null;

}

思路參考自劍指offer,解析摘自劍指offer.

劍指offer 樹中兩個節點的最低公共祖先

與 劍指offer 得到從根節點開始到輸入的兩個結點的兩條,需要遍歷兩次樹,每遍歷一次的時間複雜度是o n 得到的兩條路徑的長度在最差情況時是o n 通常情況下兩條路徑的長度是o logn include include include using namespace std struct tree...

劍指offer 樹中兩個節點的最低公共祖先

與 劍指offer 得到從根節點開始到輸入的兩個結點的兩條,需要遍歷兩次樹,每遍歷一次的時間複雜度是o n 得到的兩條路徑的長度在最差情況時是o n 通常情況下兩條路徑的長度是o logn include include include using namespace std struct tree...

《劍指offer》樹中兩個結點的最低公共祖先

說實話,和這題很有緣分。首先,這個題目給我印象很深,其次,今天在做蘑菇街實習生筆試時遇到了這個題目,所以感覺應該寫部落格,把這個題目記錄下來。筆試時遇到的題目是 給定二叉樹中的兩個結點,尋找最低公共節點。這是一種情況,是比較簡單的情況。這種情況就相當於求兩條鍊錶的公共節點。求解很簡單,先把遍歷把兩條...