Day 22 二叉树08

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

题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode)

思路:递归法,找到值在p,q两点之间的节点,理由是p在左子树,q在右子树,此节点一定是最近的公共祖先。

复制代码
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null) return null;
        if(root.val > p.val && root.val > q.val){
            TreeNode left = lowestCommonAncestor(root.left,p,q);
            return left;
        }
        if(root.val < p.val && root.val < q.val){
            TreeNode right =  lowestCommonAncestor(root.right,p,q);
            return right;
        }
        return root;
    }
}

701.二叉搜索树中的插入操作

题目链接:701. 二叉搜索树中的插入操作 - 力扣(LeetCode)

思路:不考虑深度差的话,直接插入到叶子节点

复制代码
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root == null) return new TreeNode(val);
        TreeNode newroot = root;
        TreeNode pre = root;
        while(root != null){
            pre = root;
            if(root.val > val){
                root = root.left;
            }else if(root.val < val){
                root = root.right;
            }
        }

        if(pre.val > val){
            pre.left = new TreeNode(val); 
        }else{
            pre.right = new TreeNode(val);
        }

        return newroot;
    }
}

450.删除二叉搜索树中的节点

题目链接:450. 删除二叉搜索树中的节点 - 力扣(LeetCode)

思路:删除节点子不为空,右孩子接位,右孩子移到右孩子的最左下角

复制代码
class Solution {
    public TreeNode deleteNode(TreeNode root, int key) {
        if(root == null) return root;
        if(root.val == key){
            if(root.left == null){
                return root.right;
            }else if(root.right == null){
                return root.left;
            }else{
                TreeNode cur = root.right;
                while(cur.left != null){
                    cur = cur.left;
                }
                cur.left = root.left;
                return root.right;
            }
        }

        if(root.val > key) root.left = deleteNode(root.left,key);
        if(root.val < key) root.right = deleteNode(root.right,key);
        return root;
    }
}
相关推荐
远瞻。3 小时前
【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理2
论文阅读·算法
先做个垃圾出来………6 小时前
哈夫曼树(Huffman Tree)
数据结构·算法
phoenix@Capricornus8 小时前
反向传播算法——矩阵形式递推公式——ReLU传递函数
算法·机器学习·矩阵
Inverse1628 小时前
C语言_动态内存管理
c语言·数据结构·算法
数据与人工智能律师8 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链
wuqingshun3141598 小时前
蓝桥杯 16. 外卖店优先级
c++·算法·职场和发展·蓝桥杯·深度优先
YouQian7729 小时前
2025春训第十九场
算法
CodeJourney.9 小时前
基于MATLAB的生物量数据拟合模型研究
人工智能·爬虫·算法·matlab·信息可视化
Epiphany.5569 小时前
素数筛(欧拉筛算法)
c++·算法·图论
爱吃涮毛肚的肥肥(暂时吃不了版)9 小时前
项目班——0510——JSON网络封装
c++·算法·json