235 二叉搜尋樹的最近公共祖先

2021-10-01 05:33:10 字數 2454 閱讀 9511

難度:簡單

題目描述:

思路總結

難者不會,做過就不難。利用二叉搜尋樹的性質,左子樹《根節點《右子樹。根據經驗可以得到,如果p和q不再當前結點的某一子樹里,(二叉搜素樹性質,同時大於,或者同時小於。)就是最近公共祖先。

題解一:(遞迴)

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

lowestcommonancestor

(self, root:

'treenode'

, p:

'treenode'

, q:

'treenode')-

>

'treenode'

:#思路:

if p.val < root.val and q.val < root.val:

return self.lowestcommonancestor(root.left, p, q)

if p.val > root.val and q.val > root.val:

return self.lowestcommonancestor(root.right, p, q)

return root

題解一結果:

題解二:(迭代)

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

lowestcommonancestor

(self, root:

'treenode'

, p:

'treenode'

, q:

'treenode')-

>

'treenode'

:#思路:

stack =

[root]

while stack:

cur = stack.pop(

)if p.val < cur.val and q.val < cur.val:

elif p.val > cur.val and q.val > cur.val:

else

:return cur

#改進後

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

lowestcommonancestor

(self, root:

'treenode'

, p:

'treenode'

, q:

'treenode')-

>

'treenode'

:#思路:

node = root

while node:

if p.val < node.val and q.val < node.val:

node = node.left

elif p.val > node.val and q.val > node.val:

node = node.right

else

:return node

題解二結果:

235 二叉搜尋樹的最近公共祖先

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

235 二叉搜尋樹的最近公共祖先

題目 解題思路 遞迴,二叉搜尋樹兩個點 二叉搜尋樹 二叉查詢樹,主要特點是,根節點比左孩子大,比右孩子小,即左小右大根中間。definition for a binary tree node.function treenode val param root param p param q retur...

235 二叉搜尋樹的最近公共祖先

給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。公共祖先肯定在pq之間,由於pq不知道誰先所以先判斷一下。class solution object deflowestcommonancestor self,root,p,q type root treenode type p treeno...