今日收获:二叉搜索树的最近公共祖先,插入操作,删除节点
1. 二叉搜索树的最近公共祖先
题目链接:235. - 力扣(LeetCode)
思路:和求二叉树的最近公共祖先不同,这道题可以充分利用二叉搜索树的特性。根据root和两个节点的值判断,如果都大于两个节点,则结果在root左区间,反之亦然;如果root在区间中,则结果是root。
方法:
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
// 结果在root的左区间
if (root.val>p.val&&root.val>q.val){
return lowestCommonAncestor(root.left,p,q);
}
// 结果在root的右区间
if (root.val<p.val&&root.val<q.val){
return lowestCommonAncestor(root.right,p,q);
}
// root在两个值中间
return root;
}
}
总结:二叉搜索树中&