lc235.二叉搜尋樹的最近公共祖先【①分別得到祖先序列,然後比較;②***同時查詢,找出分岔結點】
①分別得到祖先序列,然後比較
/**
* 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) {
vector<TreeNode*> pathp=search(root,p);
vector<TreeNode*> pathq=search(root,q);
TreeNode* re;
int i;
for(i=0; i<pathp.size()&&i<pathq.size(); ++i){
if(pathp[i]==pathq[i]) re=pathp[i];
else break;
}
return re;
}
vector<TreeNode*> search(TreeNode* &root,TreeNode* &p){
vector<TreeNode*> path;
TreeNode* node=root;
while(node!=p && node){
path.push_back(node);
if(p->val < node->val){
node=node->left;
}else{
node=node->right;
}
}
path.push_back(node);
return path;
}
};
②***同時查詢,找出分岔結點
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
TreeNode* node=root;
while(1){
if(p->val<node->val && q->val<node->val){
node=node->left;
}else if(p->val>node->val && q->val>node->val){
node=node->right;
}else break;
}
return node;
}
};
相關文章
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 二叉樹的最近公共祖先二叉樹
- leetcode 235. 二叉搜尋樹的最近公共祖先LeetCode
- 最近公共祖先
- (117)235. 二叉搜尋樹的最近公共祖先(leetcode)LeetCode
- 【leetcode 簡單】 第六十八題 二叉搜尋樹的最近公共祖先LeetCode
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 二叉樹:距離最近的共同祖先二叉樹
- 程式碼隨想錄day18 || 530 二叉搜尋樹最小差,501 二叉搜尋樹眾數,236 二叉搜尋樹最近公共祖先
- 二叉樹中兩個節點的最低公共祖先二叉樹
- LeetCode——最近公共祖先LeetCode
- Day21 | 530.二叉搜尋樹的最小絕對差、501.二叉搜尋樹中的眾數 、236. 二叉樹的最近公共祖先二叉樹
- 樹上公共祖先(LCA)
- Git 中的演算法-最近公共祖先Git演算法
- 程式碼隨想錄演算法訓練營第19天|235. 二叉搜尋樹的最近公共祖先 ,701.二叉搜尋樹中的插入操作,450.刪除二叉搜尋樹中的節點演算法
- 樹上問題/簡單演算法 LCA【最近公共祖先】演算法
- 程式碼隨想錄演算法訓練營第22天 |二叉樹part07:235. 二叉搜尋樹的最近公共祖先、701.二叉搜尋樹中的插入操作、450.刪除二叉搜尋樹中的節點演算法二叉樹
- 「學習筆記」tarjan 求最近公共祖先筆記
- 程式碼隨想錄演算法訓練營day22 | leetcode 235. 二叉搜尋樹的最近公共祖先、701. 二叉搜尋樹中的插入操作、450. 刪除二叉搜尋樹中的節點演算法LeetCode
- 程式碼隨想錄演算法訓練營day19| 235. 二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- Google S2 中的四叉樹求 LCA 最近公共祖先Go
- 程式碼隨想錄演算法訓練營第二十二天 | 235.二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- 程式碼隨想錄演算法訓練營day18 |530.二叉搜尋樹的最小絕對差 501.二叉搜尋樹中的眾數 236. 二叉樹的最近公共祖先演算法二叉樹
- 程式碼隨想錄演算法訓練營第18天| 530.二叉搜尋樹的最小絕對差, 501.二叉搜尋樹中的眾數 , 236. 二叉樹的最近公共祖先演算法二叉樹
- 22天【程式碼隨想錄演算法訓練營34期】第六章 二叉樹part08 (● 235. 二叉搜尋樹的最近公共祖先 ● 701.二叉搜尋樹中的插入操作 ● 450.刪除二叉搜尋樹中的節點)演算法二叉樹
- HDU 1330 Nearest Common Ancestors(求兩個點的最近公共祖先)REST
- 演算法學習筆記(5): 最近公共祖先(LCA)演算法筆記
- 【Codeforces Round 362 (Div 2)C】【STL-map 最近公共祖先思想】Lorenzo Von Matterhorn 數域二叉樹的路徑權值變更查詢二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- 祖先樹統計
- LeetCode 236. 二叉樹的最近公共祖先 極限效能演算法 比LeetCode 99%還快50倍LeetCode二叉樹演算法
- 236、二叉樹的最近公共祖先 | 演算法(leetcode,附思維導圖 + 全部解法)300題二叉樹演算法LeetCode
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 8.3考試總結(NOIP模擬19)[最長不下降子序列·完全揹包問題·最近公共祖先]
- POJ 1330 LCA最近公共祖先 離線tarjan演算法演算法
- 二叉樹的建立,插入,查詢,清空和比較二叉樹
- 二叉搜尋樹的結構
- P8025 【樹鏈剖分求祖先】