/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode insertR( TreeNode root , int val , TreeNode cur ){
if( root == null )return cur;
if( val < root.val )root.left = insertIntoBST( root.left , val );
if( val > root.val )root.right = insertIntoBST( root.right , val );
return root;
}
public TreeNode insertIntoBST(TreeNode root, int val) {
return insertR( root , val , new TreeNode( val ));
}
}
这是我最开始的思路,不过在root==null那里,我直接返回空了,,,说到底还是理解不到位
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode insertIntoBST(TreeNode node, int val)
{
if(node == null)
return new TreeNode(val);
if(val < node.val)
node.left = insertIntoBST(node.left, val);
else
node.right = insertIntoBST(node.right, val);
return node;
}
}
感觉这个写的也很好,
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
insert(root, val);
return root;
}
public void insert(TreeNode root, int val) {
if (val < root.val) {
if (root.left != null) {
insert(root.left, val);
} else {
root.left = new TreeNode(val);
}
} else {
if (root.right != null) {
insert(root.right, val);
} else {
root.right = new TreeNode(val);
}
}
}
}