LeetCode - Medium - 701

Input: root = [4,2,7,1,3,null,null,null,null,null,null], val = 5

Output: [4,2,7,1,3,5]

Constraints:

  • The number of nodes in the tree will be in the range [ 0 , 1 0 4 ] [0, 10^4] [0,104].

  • -108 <= Node.val <= 108

  • All the values Node.val are unique.

  • -108 <= val <= 108

  • It’s guaranteed that val does not exist in the original BST.

Analysis


方法一:递归法。

方法二:迭代法。

Submission


import com.lun.util.BinaryTree.TreeNode;

public class InsertIntoABinarySearchTree {

//方法一:递归法

public TreeNode insertIntoBST(TreeNode root, int val) {

if(root == null)

return new TreeNode(val);

if(val < root.val) {

root.left = insertIntoBST(root.left, val);

}else if(root.val < val){

root.right = insertIntoBST(root.right, val);

}

return root;

}

//方法二:迭代法

public TreeNode insertIntoBST2(TreeNode root, int val) {

if(root == null)

return new TreeNode(val);

TreeNode curr = root;

while(true) {

if(val < curr.val) {

if(curr.left != null) {

curr = curr.left;

}else {

curr.left = new TreeNode(val);

break;

}

}else if(curr.val < val) {

if(curr.right != null) {

curr = curr.right;

}else {

curr.right = new TreeNode(val);

break;

}

}

}

return root;

}

}

Test


import static org.junit.Assert.*;

import org.junit.Test;

import com.lun.util.BinaryTree;

import com.lun.util.BinaryTree.TreeNode;

public class InsertIntoABinarySearchTreeTest {

@Test

public void test() {

InsertIntoABinarySearchTree obj = new InsertIntoABinarySearchTree();

TreeNode original1 = BinaryTree.integers2BinaryTree(4,2,7,1,3);

TreeNode expected1 = BinaryTree.integers2BinaryTree(4,2,7,1,3,5);

assertTrue(BinaryTree.equals(obj.insertIntoBST(original1, 5), expected1));

TreeNode original2 = BinaryTree.integers2BinaryTree(40,20,60,10,30,50,70);

TreeNode expected2 = BinaryTree.integers2BinaryTree(40,20,60,10,30,50,70,null,null,25);

assertTrue(BinaryTree.equals(obj.insertIntoBST(original2, 25), expected2));

TreeNode original3 = BinaryTree.integers2BinaryTree(4,2,7,1,3,null,null,null,null,null,null);

TreeNode expected3 = BinaryTree.integers2BinaryTree(4,2,7,1,3,5);

assertTrue(BinaryTree.equals(obj.insertIntoBST(original3, 5), expected3));

}

@Test

public void test2() {

InsertIntoABinarySearchTree obj = new InsertIntoABinarySearchTree();

TreeNode original1 = BinaryTree.integers2BinaryTree(4,2,7,1,3);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值