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

    技术2025-09-04  31

    二叉搜索树中的插入操作

    1. 题目描述

    难易度:中等

    给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。

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

    例如,

    给定二叉搜索树:

    4 / \ 2 7 / \ 1 3

    和 插入的值: 5

    你可以返回这个二叉搜索树:

    4 / \ 2 7 / \ / 1 3 5

    或者这个树也是有效的:

    5 / \ 2 7 / \ 1 3 \ 4

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree

    2. 思路分析

    首先,插入的节点最终位置一定是在叶子节点处,则只需要在叶子结点处找到合适位置即可。即节点的left和right域为空的位置,当然也可以插入到其他位置,但此种方式容易实现

    当val大于当前节点的值时则插入右子树

    当val小于当前节点的值时则插入左子树

    具体过程看代码注释

    3. 代码演示

    public class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { if (root == null) { return new TreeNode(val); } TreeNode node = root; while (true) { //插入到右子树 if (val > node.val) { if (node.right == null) { node.right = new TreeNode(val); return root; } else { node = node.right; } } else {//插入到左子树 if (node.left == null) { node.left = new TreeNode(val); return root; } else { node = node.left; } } } } } class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } }
    Processed: 0.013, SQL: 10