[LeetCode] 701. Insert into a Binary Search Tree

45 篇文章 0 订阅

原题链接:https://leetcode.com/problems/insert-into-a-binary-search-tree/

1. 题目介绍

Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert the value into the BST. Return the root node of the BST after the insertion. It is guaranteed that the new value does not exist in the original BST.

Note that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return any of them.

给出一个二叉搜索树,以及一个值,要把这个值插入二叉搜索树。返回插入值之后的新树。题目保证要插入的值,在原来的二叉搜索树中不存在。

需要注意的是,也许存在多种有效的插入方式,只要新树仍然是一棵二叉搜索树就行。如果有多种插入方式,你可以返回任意一种。

一棵树是二叉搜索树,意味着该树上每一个节点上的值,都要大于所有的左子树上的节点,小于所有右子树上的节点。

For example,
在这里插入图片描述
You can return this binary search tree:
需要返回新的二叉搜索树:
在这里插入图片描述
This tree is also valid:
还有一种插入的方式也可以:
在这里插入图片描述

2. 解题思路

根据二叉搜索树的性质,本题可以使用递归进行解决。
由于题目保证要插入的值不在树中,因此所有节点只有两种情况,大于要插入的值,或者小于要插入的值。

每次递归分析一个节点时,如果当前节点的值大于要插入的值,那么就递归分析左子树,否则递归分析右子树。当节点为空时,就可以把要插入的值放入了。

每个递归函数都返回已经插入完毕的子树。

实现代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
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);
        }else{
            root.right = insertIntoBST(root.right, val);
        }
        
        return root;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值