给定二叉搜索树(BST)的根节点 root
和要插入树中的值 value
,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。新值和原始二叉搜索树中的任意节点值都不同。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果 。
输入:root = [4,2,7,1,3], val = 5
输出:[4,2,7,1,3,5]
输入:root = [40,20,60,10,30,50,70], val = 25
输出:[40,20,60,10,30,50,70,null,null,25]
输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
输出:[4,2,7,1,3,5]
image.png
另一个满足题目要求可以通过的树是:
image.pngclass Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
if (root == null) { // 直接插入
return new TreeNode(val);
}
TreeNode cur = root;
while (cur != null) {
if (val < cur.val) {
if (cur.left == null) { // 插入到left
cur.left = new TreeNode(val);
break;
} else {
cur = cur.left;
}
} else {
if (cur.right == null) { // 插入到right
cur.right = new TreeNode(val);
break;
} else {
cur = cur.right;
}
}
}
return root;
}
}
复杂度分析:
- 时间复杂度:O(N),其中 N 为树中节点的数目。最坏情况下,我们需要将值插入到树的最深的叶子结点上,而叶子节点最深为 O(N)。
- 空间复杂度:O(1)。我们只使用了常数大小的空间。
网友评论