题目描述:
解题思路:
根据二叉搜索树的性质,找到符合条件的地方插入新的节点。
参考代码:
public TreeNode insertIntoBST(TreeNode root, int val) {
if (root == null) {
return new TreeNode(val);
}
TreeNode pos = root;
while (pos != null) {
if(pos.val>val){
if(pos.left==null){
pos.left=new TreeNode(val);
break;
}
else {
pos=pos.left;
}
}else {
if(pos.right==null){
pos.right=new TreeNode(val);
break;
}else {
pos=pos.right;
}
}
}
return root;
}
第二种思路是递归,如果为空,根据值建立新的树返回即可,小于根节点,在左子树中插入,相反在右子树中插入。
参考代码:
public TreeNode insertIntoBST2(TreeNode root, int val) {
if(root==null){
return new TreeNode(val);
}
if(root.val>val)
root.left=insertIntoBST2(root.left,val);
if(root.val<val)
root.right=insertIntoBST2(root.right,val);
return root;
}