【打卡第237道】【二叉树】【leetCode高频】:701. 二叉搜索树中的插入操作

1、题目描述

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

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

2、算法分析

一般的话,二叉搜索树中的元素没有重复的。

思路:

①如果根节点为空的话,直接新建一个结点

②如果根节点的值小于val,那么root.right = insertIntoBST(root.right,val); root.right和val进行比较。

③如果根节点的值大于val,那么root.left = insertIntoBST(root.left,val);root.left和val进行比较。

最后返回root;

3、代码实现

/**
 * Definition for a binary tree node.
 * public 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;
 *     }
 * }
 */
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root == null){
            return new TreeNode(val);
        }
        if(root.val < val){
            root.right = insertIntoBST(root.right,val);
        }
        if(root.val > val){
            root.left = insertIntoBST(root.left,val);
        }
        return root;
    }
}


版权声明:本文为Sunshineoe原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。