0701. Insert Into a Binary Search Tree

701. Insert into a Binary Search Tree #

Problem #

You are given the root node of a binary search tree (BST) and a value to insert into the tree. Return the root node of the BST after the insertion. It is guaranteed that the new value does not exist in the original BST.

Notice that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return any of them.

Example 1:

https://assets.leetcode.com/uploads/2020/10/05/insertbst.jpg

Input: root = [4,2,7,1,3], val = 5
Output: [4,2,7,1,3,5]
Explanation: Another accepted tree is:

https://assets.leetcode.com/uploads/2020/10/05/bst.jpg

Example 2:

Input: root = [40,20,60,10,30,50,70], val = 25
Output: [40,20,60,10,30,50,70,null,null,25]

Example 3:

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, 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.

Problem Summary #

Given the root node of a binary search tree (BST) and a value to insert into the tree, insert the value into the binary search tree. Return the root node of the BST after insertion. The input data guarantees that the new value is different from the value of any node in the original BST. Note that there may be multiple valid insertion methods, as long as the tree remains a binary search tree after insertion. You can return any valid result.

Solution Approach #

  • Easy problem. There are multiple ways to insert a node; here the author chooses a simple one. Traverse the binary tree starting from the root. If the current node’s value is smaller than the value of the node to be inserted, traverse to the right; if the current node’s value is greater than the value of the node to be inserted, traverse to the left. Finally, the null node reached during traversal is the place to insert.

Code #

package leetcode

import "github.com/halfrost/leetcode-go/structures"

// TreeNode define
type TreeNode = structures.TreeNode

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func insert(n *TreeNode, val int) *TreeNode {
	if n == nil {
		return &TreeNode{Val: val}
	}
	if n.Val < val {
		n.Right = insert(n.Right, val)
	} else {
		n.Left = insert(n.Left, val)
	}
	return n
}

func insertIntoBST(root *TreeNode, val int) *TreeNode {
	return insert(root, val)
}

Calendar Jun 25, 2026
Edit Edit this page
Total visits:   You are visitor No.
中文