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

2021-10-08 23:51:53 字數 1276 閱讀 4580

題目描述:例如,給定如下二叉搜尋樹: 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 的最近公共祖先是 6。

示例 2:

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

輸出: 2

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

說明:

所有節點的值都是唯一的。

p、q 為不同節點且均存在於給定的二叉搜尋樹中。

方法1:遞迴

主要思路:

(1)利用二叉搜尋的特性來分辨兩個要查詢的結點的最近祖先結點;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//說明兩個結點都在當前結點的右子樹上

else

if(root-

>val

>val&&root-

>val

>val)

else

return

null;}

};

方法2:迭代主要思路:

(1)判斷的思路和方法1一致,只是避免的使用遞迴函式,直接在迴圈中找需要的結點;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else

if(root-

>val

>val&&root-

>val

>val)

else

}return root;}}

;

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...