题目:
题解:
自顶向下遍历,找到要插入的位置,插入节点,需要考虑空树情况,时间复杂度:O(n)。
public TreeNode insertIntoBST(TreeNode root, int val) {
if (root == null) {
return new TreeNode(val);
}
TreeNode temp = root;
while (true) {
if (val < temp.val) {
if (temp.left != null) {
temp = temp.left;
} else {
// 找到待插入位置
temp.left = new TreeNode(val);
break;
}
} else {
if (temp.right != null) {
temp = temp.right;
} else {
// 找到待插入位置
temp.right = new TreeNode(val);
break;
}
}
}
return root;
}
递归写法:
public TreeNode insertIntoBST(TreeNode root, int val) {
if (root == null) {
return new TreeNode(val);
}
if (val > root.val) {
root.right = insertIntoBST(root.right, val);
} else {
root.left = insertIntoBST(root.left, val);
}
return root;
}