题目地址(701. 二叉搜索树中的插入操作)
https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
题目描述
给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。示例 1:输入:root = [4,2,7,1,3], val = 5输出:[4,2,7,1,3,5]解释:另一个满足题目要求可以通过的树是:示例 2:输入:root = [40,20,60,10,30,50,70], val = 25输出:[40,20,60,10,30,50,70,null,null,25]示例 3:输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5输出:[4,2,7,1,3,5]提示:给定的树上的节点数介于 0 和 10^4 之间每个节点都有一个唯一整数值,取值范围从 0 到 10^8-10^8 <= val <= 10^8新值和原始二叉搜索树中的任意节点值都不同
前置知识
公司
- 暂无
思路
直接插就行 不用管树得结构
val比左边大 就到右边去递归 直到节点=null 返回new一个新的节点并返回
关键点
代码
- 语言支持:Java
Java Code:
/*** 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 (val < root.val) {root.left = insertIntoBST(root.left,val);}if (val > root.val) {root.right = insertIntoBST(root.right,val);}return root;}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=KNGAf)
- 空间复杂度:
#card=math&code=O%28n%29&id=bkyYC)
