日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

235. 二叉搜索树的最近公共祖先

發(fā)布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 235. 二叉搜索树的最近公共祖先 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給定一個二叉搜索樹, 找到該樹中兩個指定節(jié)點的最近公共祖先。

百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結(jié)點 p、q,最近公共祖先表示為一個結(jié)點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節(jié)點也可以是它自己的祖先)。”

例如,給定如下二叉搜索樹: 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
解釋: 節(jié)點 2 和節(jié)點 8 的最近公共祖先是 6。
示例 2:

輸入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
輸出: 2
解釋: 節(jié)點 2 和節(jié)點 4 的最近公共祖先是 2, 因為根據(jù)定義最近公共祖先節(jié)點可以為節(jié)點本身。

說明:

所有節(jié)點的值都是唯一的。
p、q 為不同節(jié)點且均存在于給定的二叉搜索樹中。
數(shù)據(jù)結(jié)構(gòu)中經(jīng)典二叉搜索樹,一個節(jié)點的左子樹一定小于這個點,右子樹一定大于這個點。所以我們可以按著遞歸或者迭代的方式去尋找。如果這目標(biāo)兩個點都在某個點的一側(cè),這個點是目標(biāo)兩點的祖先,但一定不是最近公共祖先,所以按著需求往下走。如果不在某一點的一側(cè),那么這個點就是目標(biāo)兩點的最近公共祖先。
我一開始想的是該用什么方法去求LCA,忘了二叉搜索樹的性質(zhì)。。
代碼如下:

/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ancestorPtr = root;while(ancestorPtr!=NULL){if (ancestorPtr->val > p->val && ancestorPtr->val > q->val){ancestorPtr = ancestorPtr->left;}else if (ancestorPtr->val < p->val && ancestorPtr->val < q->val){ancestorPtr = ancestorPtr->right;}else return ancestorPtr;}return NULL; } };

努力加油a啊,(o)/~

總結(jié)

以上是生活随笔為你收集整理的235. 二叉搜索树的最近公共祖先的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。