236 二叉樹的最近公共祖先

2022-05-17 07:59:54 字數 801 閱讀 2332

函式功能:

1、如果p q都存在,返回他們的公共祖先

2、只存在乙個,那就返回存在的乙個

3、都不存在,返回null

遞迴左右子樹,左子樹的結果為left1,右子樹結果為right1

left1空代表結果(公共祖先)在right1,反之亦然。

如果都非空,說明p q在左右兩邊,此時要返回根結點。

否則就是都空的情況,返回null

1/**

2* definition for a binary tree node.

3* struct treenode

8* };9*/

10class

solution

17if(root==p||root==q)

1821 treenode* left1=lowestcommonancestor(root->left,p,q);

22 treenode* right1=lowestcommonancestor(root->right,p,q);

23if(left1==null)

2427

if(right1==null)

2831

if(left1&&right1)

3235

return

null;

363738}

39 };

view code

總結:這個題和前面的235題進行對比,就是二叉樹和二叉搜尋樹概念的區別,很好理解,**都是統一的模板格式,建議背誦下來,解題就方便了很多。

236 二叉樹最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。最近公共祖先的定義為 對於有根樹 t 的兩個結點 p q,最近公共祖先表示為乙個結點 x,滿足 x 是 p q 的祖先且 x 的深度盡可能大 乙個節點也可以是它自己的祖先 例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,nu...

236 二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1輸出 3解釋 節點5和節點1的最近公共祖先是節點3。示例 2 ...

236 二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節點 1 的最近公共祖先是節點 ...