问题描述:给定二叉搜索树(BST)的根节点和要插入树中的节点,将值插入二叉搜索树。返回插入后二叉搜索输的根节点。输入数据保证新值和原始二叉树中的任意节点值都不同。注意:可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回任意有效的结果。
public void insert(TreeNode root,int val)
{
if(root.val>val)
{
if(root.left==null)
{
TreeNode newNode=new TreeNode();
newNode.val=val;
root.left=newNode;
}else
{
insert(root.left,val);
}
}else
{
if(root.right==null)
{
TreeNode newNode=new TreeNode();
newNode.val=val;
root.right=newNode;
}else
{
insert(root.right,val);
}
}
}
public TreeNode outerFunc(TreeNode root,int val)
{
insert(root,val);
return root;
}
非递归方式求解:通过在while循环中不停的向下走。
public TreeNode insert(TreeNode root,int val)
{
TreeNode current=root;
while(true)
{
if(current.val>val)
{
if(current.left==null)
{
TreeNode newNode=new TreeNode();
newNode.val=val;
current.left=newNode;
break;
}else
{
current=current.left;
}
}else
{
if(current.val<val)
{
if(current.right==null)
{
TreeNode newNode=new TreeNode();
newNode.val=val;
current.right=newNode;
break;
}else
{
current=current.left;
}
}
}
???????return root;
}