当前位置: 首页剑指offer刷题第五期问题详情 【二叉树专题】剑指 Offer 68 – I. 二叉搜索树的最近公共祖先 本问题对应课程链接:剑指offer刷题第五期 要求: 1、请打卡你的解题代码,如果能简单说一下思路则简单说一下思路。 2、给出你代码所用的时间复杂度和空间复杂度
共以下 13 个回答
// 一次遍历法,判断当前节点和要查找的两个节点是否都小于或者大于当前节点的值,如果都小于或者大于就更新当前节点
// 否则表示当前节点就是两个要查找节点的最近父节点,因为当前节点一定是分叉点。
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
while(true){
if(root->val < p->val && root->val < q->val){
root = root->right;
}
else if (root->val > p->val && root->val > q->val){
root = root->left;
}
else break;
}
return root;
}
根据搜索树大小性质来进行判断
1
根据二叉搜索树的数值性质,目标节点应该出现在搜索中第一次分叉点(p < dst < q)
时间O(n) 空间O(n)
打卡
1、利用数值判断