【LeetCode 701】二叉搜索树的插入操作

# 【LeetCode 701】二叉搜索树的插入操作

@[toc]

## 题目描述:

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

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

## 题目分析

1.二叉搜索树本身是一个二叉树,是递归定义的,因此在解题时较多地考虑用递归的思想;

2.二叉搜索树的特点在于左右子树的大小是严格限定的,对于一个父节点,其左儿子小于该父节点,右儿子大于该父节点。因此在插入时,考虑从根节点开始逐层与左右节点作比较,BFS(广度优先搜索)插入;

ps:当树不含有左右节点,即为空树时,直接插入即可。

## 题解代码

```java

/**

* 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);

        //比较大小作BFS

        else if(root.val<val)root.right=insertIntoBST(root.right,val);

        else root.left=insertIntoBST(root.left,val);

        return root;

    }

}

```

## 总结

本题也可以用迭代的写法,但考虑到二叉树本身的性质,做此类题一般用递归写法。

关键在于清楚二叉搜索树的性质,以及对BFS的思想的深入了解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名: 李小娜 [嵌牛导读] :这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉...
    n184阅读 3,833评论 0 0
  • 我的CSDN: ListerCi我的简书: 东方未曦 一、二叉树与递归 二叉树与递归有着千丝万缕的联系,二叉树在定...
    东方未曦阅读 11,534评论 3 9
  • 上次写了二叉树遍历,其中在非递归的遍历中,只写了前序遍历,没有写非递归中序遍历和后续遍历。非递归要用到栈,只要根据...
    BrianAguilar阅读 3,258评论 0 1
  • 94. Binary Tree Inorder Traversal 中序 inorder:左节点->根节点->右节...
    Morphiaaa阅读 3,783评论 0 0
  • 游历后,人们会有的一大感受就是会和很多亲友复述或者分享游览中的各种风光,美食,趣闻,甚至美人什么,然后赶紧拿出自己...
    华阳真逸阅读 3,110评论 1 0