33 樹 二叉樹的最近公共祖先

2021-10-21 08:42:11 字數 1216 閱讀 7711

leetcode: 236. 二叉樹的最近公共祖先

【medium】

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

示例 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 。因為根據定義最近公共祖先節點可以為節點本身。

示例 3:

輸入:root = [1,2], p = 1, q = 2

輸出:1

樹中節點數目在範圍 [2, 105] 內。

− 10

9<=n

ode.

val<=1

09-10^9 <= node.val <= 10^9

−109

<=n

ode.

val<=1

09所有 node.val 互不相同 。

p != q

p 和 q 均存在於給定的二叉樹中。

遞迴查詢左右子樹,如果root為空或者與p或q相等,則直接返回root,否則分別遞迴遍歷左右子樹,如果p和q分別在root的左右子樹中,則left和right都不會為null,返回root即可;如果p和q都在左子樹或都在右子樹,則必定有乙個為root,返回那個不為null的節點即可。

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

}

時間複雜度:o(n),最壞情況下需要遍歷所有節點

空間複雜度:o(n),取決於棧的空間開銷

二叉樹的最近公共祖先 二叉樹

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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 的最近公共祖先是節點 ...

二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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...