栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 求解二叉搜索树中的插入操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 求解二叉搜索树中的插入操作

文章目录
    • 一、题目
    • 二、迭代法
    • 三、递归法
    • 四、总结

一、题目

给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。

注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。

二、迭代法

该题可以利用二叉搜索树的特性,找到要插入的节点,插入即可

搜索过程中,需要前驱节点记录要插入的位置

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        //当前节点为空,直接返回新插入的节点为根节点
        if (root == null) {
            return new TreeNode(val);
        }
        TreeNode cur = root;
        //需要前驱节点记录要插入的位置
        TreeNode pre = root;
        while (cur != null) {
            pre = cur;
            //左子树查找
            if (cur.val > val) {
                cur = cur.left;
            } else {//右子树查找
                cur = cur.right;
            }
        }
        //根据前驱确定要插入的位置
        if (pre.val > val) {
            pre.left = new TreeNode(val);
        } else {
            pre.right = new TreeNode(val);
        }
        return root;
    }
}
三、递归法

(1)确定递归参数及返回值

(2)确定递归终止条件

终止条件就是找到遍历的节点为null的时候,就是要插入节点的位置了,并把插入的节点返回。

if (root == null) {
	return new TreeNode(val);
}

(3)确定单层递归逻辑

不需要遍历整个树,根据比较当前节点值和目标值的关系,遍历一条边即可

		if (root.val > val) {
            root.left = insertIntoBST(root.left, val);
        }
        if (root.val < val) {
            root.right = insertIntoBST(root.right, val);
        }

通过递归函数返回值完成了新加入节点的父子关系赋值操作了,下一层将加入节点返回,本层用root->left或者root->right将其接住

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if (root == null) {
            return new TreeNode(val);
        }
        if (root.val > val) {
            root.left = insertIntoBST(root.left, val);
        }
        if (root.val < val) {
            root.right = insertIntoBST(root.right, val);
        }
        return root;
    }
}
四、总结

利用二叉搜索树的特性

注意二叉搜索树的迭代写法

需要搜索单条边的写法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号