leetcode236 二叉樹的最近公共祖先

2022-10-07 20:12:17 字數 510 閱讀 7109

拿到這個題目首先想到的就是希望能夠自底向上,

應該使用回溯,回溯是天然的自底向上。

後序遍歷就是天然的回溯,最先處理的一定是葉子節點。

那麼要走遞迴三部曲:

確定返回值和引數

確定終止條件

迴圈體確定返回值和引數

其實這道題最基本的想法應該是用boolean來表示root中能否找到p和q,不過可以用treenode是否為null來表示能找到與否。所以這裡使用題目中給出的函式簽名即可。

終止條件

其實終止條件可以不止乙個,如果為空說明找不到,如果為p或者q他們自身就能找到自己也可以直接返回root。

單層邏輯體

我們需要對整個棵樹進行遍歷,需要用兩個狀態變數來接受對左右子樹的遍歷結果。

如果只在乙個,說明lca由它返回的,直接返回不為空的。

如果兩個都有,那就說明是根節點。

否則為null。

class solution 

}

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