二叉樹的最近公共祖先

2022-07-10 16:27:12 字數 1217 閱讀 5542

base case是啥?

得到遞迴結果後,會做什麼?

下面使用乙個題目來示例一下。

給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。

例如,給定如下二叉樹: 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:

輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4

輸出: 5

解釋: 節點 5 和節點 4 的最近公共祖先是節點 5。因為根據定義最近公共祖先節點可以為節點本身。

由於是乙個二叉樹的題目,直接寫上二叉樹框架應該沒有問題。

class solution 

}

下面開始靈魂三問:

2.1.2.1 這個函式應該幹什麼?

函式功能:找出以根節點root的樹下節點pq的最近公共祖先節點,並返回公共祖先節點。

根據函式功能進行正向邏輯推理(這裡不要把root認為是最大範圍的根節點):

2.1.2.2 base case是啥?

2.1.2.3 得到遞迴結果後,會做什麼?

根據遞迴結果進行反向邏輯推理(這裡把root認為是最大範圍的根節點,不要陷入遞迴)

然後就不要想這麼多了,先把**寫上吧!如果出錯,肯定是三個問題**沒有答好,就要回去再仔細思考一下,看看有沒有漏,記住回去想的時候最好避免陷入遞迴裡面去想。

2.1.3 **

class solution 

if (left == null && right == null)

return left != null ? left : right;}}

二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 思路 剛開始使用boolean來判斷要查詢的兩節點在左右孩子上,後面修改為使用treenode與null判斷兩節點位置 1 分別向左孩子和右孩子遞迴。2 若當...

二叉樹的最近公共祖先

輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 4 輸出 5 法1 分別找出根節點到兩個節點的路徑,則最後乙個公共節點就是最低公共祖先。法2 public treen...

二叉樹的最近公共祖先

例如,給定如下二叉樹 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 輸入 root 3,5,1,6,2,0,...