Lowest Common Ancestor III

Lowest Common Ancestor III -1.png

Lowest Common Ancestor III -2.png

解題思路 :

跟普通找 LCA 的差別就是 題目給的 AB兩點可能根本不在樹裡面 所以另外設(shè)定 boolean 檢查是否真的找到 A 或 B 點 如果有一點沒找到的話 就從找到的另一點往下搜尋看看是否有包含沒找到的點

C++ code :

<pre><code>
/**

  • Definition of TreeNode:
  • class TreeNode {
  • public:
  • int val;
    
  • TreeNode *left, *right;
    
  • TreeNode(int val) {
    
  •     this->val = val;
    
  •     this->left = this->right = NULL;
    
  • }
    
  • }
    */

class Solution {

public:

/**
 * @param root: The root of the binary tree.
 * @param A and B: two nodes
 * @return: Return the LCA of the two nodes.
 */
TreeNode *LCA(TreeNode* root, TreeNode* A, TreeNode* B, bool &findA, bool &findB)
{
    if(!root) return root;
    if(root == A){
        findA = true;
        return root;
    }
    if(root == B){
        findB = true;
        return root;
    }
    TreeNode *left = LCA(root->left, A, B, findA, findB);
    TreeNode *right = LCA(root->right, A, B, findA, findB);
    if(left && right) return root;
    return left? left : right;
}

bool search(TreeNode *res, TreeNode *n)
{
    if(res == nullptr) return false;
    if(res == n) return true;
    return search(res->left, n) || search(res->right, n);
}

TreeNode *lowestCommonAncestor3(TreeNode* root, TreeNode* A, TreeNode* B) {
    // write your code here
    bool findA = false, findB = false;
    TreeNode *res = LCA(root, A, B, findA, findB);
    bool check = true;
    if(!findA || !findB)
    {
        if(res == A) check = search(res, B);
        else check = search(res, A);
    }
    return check? res : nullptr;
}

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苔巨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌工碾,老刑警劉巖翼闽,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件永丝,死亡現(xiàn)場離奇詭異劝评,居然都是意外死亡因惭,警方通過查閱死者的電腦和手機屈嗤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門潘拨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饶号,你說我怎么就攤上這事铁追。” “怎么了茫船?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵琅束,是天一觀的道長。 經(jīng)常有香客問我算谈,道長涩禀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任然眼,我火速辦了婚禮艾船,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己屿岂,他們只是感情好礁蔗,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雁社,像睡著了一般浴井。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霉撵,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天磺浙,我揣著相機與錄音,去河邊找鬼徒坡。 笑死撕氧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的喇完。 我是一名探鬼主播伦泥,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锦溪!你這毒婦竟也來了不脯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤刻诊,失蹤者是張志新(化名)和其女友劉穎防楷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體则涯,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡复局,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粟判。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亿昏。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖档礁,靈堂內(nèi)的尸體忽然破棺而出角钩,到底是詐尸還是另有隱情,我是刑警寧澤事秀,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布彤断,位于F島的核電站,受9級特大地震影響易迹,放射性物質(zhì)發(fā)生泄漏宰衙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一睹欲、第九天 我趴在偏房一處隱蔽的房頂上張望供炼。 院中可真熱鬧一屋,春花似錦、人聲如沸袋哼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涛贯。三九已至诽嘉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弟翘,已是汗流浹背虫腋。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稀余,地道東北人悦冀。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像睛琳,于是被迫代替她去往敵國和親盒蟆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 提問的智慧 How To Ask Questions The Smart Way Copyright ? 2001...
    Albert陳凱閱讀 2,253評論 0 8
  • 清晨师骗,馬路上有個跑步的身影帶著耳機历等,彷彿與世隔絕般的臉孔 眼神堅定的邁開每一步步伐... 跑著跑著進入了某個小型社...
    heomoomoo閱讀 1,986評論 0 1
  • 隨筆1-24(2015.6-10) 1、作者 才華不是財富丧凤,痛苦不是財富募闲,用才華對痛苦進行思考和表達才是步脓。於是有了...
    四葉閱讀 1,487評論 3 14
  • 為何叫做 shell 愿待? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系?...
    Zero___閱讀 3,142評論 3 49
  • 胡說八道也信閱讀 173評論 0 0