题目描述
题目分析
这题其实就是一个很简单的二叉排序树插入问题。首先我们需要明白一棵二叉排序树的插入过程是怎样的,对于一棵二叉排序树,我们插入一个结点时,首先是与当前树的根结点大小进行比较,如果比根节点的值大,则插入右子树部分然后对右子树进行类似操作;小则插入左子树部分,然后对左子树进行同样的操作。当我们知道此手动模拟的过程后,我们不难发现这明显是一种重复比较的过程。因此可以考虑使用递归解决,仅需要判断好什么时候递归(往左还是往右递归),什么时候插入(插入左结点还是插入右结点)即可。
代码
public TreeNode insertIntoBST(TreeNode root,int val){
if (root==null)
return new TreeNode(val);
if (val<root.val&&root.left!=null)
insertIntoBST(root.left,val);
else if (val<root.val&&root.left==null)
root.left = new TreeNode(val);
else if (val>root.val&&root.right!=null)
insertIntoBST(root.right,val);
else if (val>root.val&&root.right==null)
root.right = new TreeNode(val);
return root;
}