LeetCode236 二叉樹的最近公共祖先

2022-08-11 09:03:11 字數 776 閱讀 3423

對情況進行分類:

(1)如果root為空,則返回null;

(2)如果p和q其中之一為root,則這個節點就是最近公共祖先,返回root;

其他情況下,p和q有可能都在root的左子樹、都在root的右子樹、或者左右子樹各乙個;

(3)遞迴計算lowestcommonancestor(root -> left, p, q)和lowestcommonancestor(root -> right, p, q),在root的

左右子樹中分別尋找p,q的公共祖先,如果找不到,返回的結果是null。

如果左子樹找不到,則返回右子樹中的查詢結果,右子樹找不到就返回左子樹的查詢結果,都找不到,就是p和q左右各乙個,返回root。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

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

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

if(l == null)

if(r == null)

return root;}};

LeetCode236 二叉樹最近祖先

思考 這個函式就是查詢p,q兩個節點的祖先,然後給了這棵樹的root,1 它先進行判斷,根節點是不是null 或者根節點是否是p q,要是有乙個是,那祖先就肯定是root 2 它用了遞迴的思想去查詢左右兩個子樹,因為pq的祖先要麼在左邊,要麼就在右邊,所以肯定能找到乙個祖先。3 若找到的left 子...

LeetCode 236 二叉樹最近公共祖先

leetcode 236 二叉樹最近公共祖先 236.二叉樹的最近公共祖先 題目描述 給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。解體思路 分兩部分解決 第一部分 實現判斷兩個結點包含於某根節點的子樹內 第二部分 先序遍歷二叉樹,如果根節點的子樹包含qp目標結點 傳入左孩子,進行遞迴。傳入...

leetcode 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 的最近公共祖先是節點 ...