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

2021-10-09 20:18:51 字數 1107 閱讀 2906

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

例如,給定如下二叉搜尋樹:  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.判斷 p和q是否為父子節點,是的話直接返回父節點

2.根據p和q與根節點值的大小比較,

1)如果都比根節點小,就遞迴根節點的左子樹,

2)如果都比根節點大,就遞迴根節點的右子樹

3)如果乙個比根節點大,乙個小,表示p和q分散在根節點的左右兩側,直接返回根節點

/**

* definition for a binary tree node.

* struct treenode ;

*/struct treenode* lowestcommonancestor(struct treenode* root, struct treenode* p, struct treenode* q)

else if(q->left == p || q->right == p) //判斷q為父節點

else

}

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