思路
由于是二叉搜索树,所以我们其实对于每个要插入的节点都可以放在叶子节点处,比如要插入的元素5,首先和根节点4对比,比4大就往右遍历,比4小就往左遍历,此时5 > 4,往右遍历到7,然后再判断5和7的大小,发现5 < 7,那么往7的左子树遍历发现是空,那么我们把5更新到这个左子树上,此时就是插入后的结果
但是还有一种情况就是无法进行遍历,也就是root为空的时候,我们就需要直接在根节点插入,所以直接返回要插入的这个节点就可以
解答
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
var insertIntoBST = function (root, val) {
let node = root;
while(node){
if(node.val > val){
if(node.left){
node = node.left
}else{
node.left = new TreeNode(val)
return root;
}
}else if(node.val < val){
if(node.right){
node = node.right
}else {
node.right = new TreeNode(val)
return root;
}
}
}
return new TreeNode(val);
};