In a Binary Search Tree (BST), for every node, all values in its left subtree are smaller, and all values in its right subtree are larger.
Click to reveal answer
beginner
Why does the BST property matter?
It allows fast searching, inserting, and deleting because we can decide to go left or right at each node, reducing the work to about log₂(n) steps.
Click to reveal answer
intermediate
What happens if the BST property is broken?
The tree loses its order, making search and other operations slower, often requiring checking many nodes instead of just a few.
Click to reveal answer
beginner
How does the BST property help in searching for a value?
At each node, compare the value to search with the node's value. If smaller, go left; if larger, go right. This halves the search space each step.
Click to reveal answer
intermediate
Can a BST have duplicate values? Why or why not?
Usually no, because duplicates break the strict ordering needed for the BST property. Some variations allow duplicates but handle them carefully (e.g., always to the right).
Click to reveal answer
What must be true for every node in a BST?
ALeft subtree values < node < right subtree values
BLeft subtree values > node > right subtree values
CAll subtree values are equal to node
DNo specific order is required
✗ Incorrect
The BST property requires left subtree values to be smaller and right subtree values to be larger than the node.
Why is searching faster in a BST compared to a regular binary tree?
ABecause BST property lets us ignore half the tree at each step
BBecause BST is always balanced
CBecause BST stores values in arrays
DBecause BST uses hashing
✗ Incorrect
The BST property lets us decide to go left or right, ignoring half the nodes each time, speeding up search.
What happens if you insert a value smaller than the root in a BST?
AIt goes to the right subtree
BIt goes to the left subtree
CIt replaces the root
DIt is ignored
✗ Incorrect
Smaller values go to the left subtree to maintain the BST property.
If a BST property is broken, what is the likely effect?
ATree becomes balanced
BSearch becomes faster
CSearch becomes slower
DTree becomes empty
✗ Incorrect
Breaking the BST property means we cannot decide direction easily, making search slower.
Which of these is NOT a reason the BST property is useful?
AFaster search
BFaster insert
CFaster delete
DAllows duplicate values anywhere
✗ Incorrect
BST property usually does not allow duplicates anywhere; duplicates must be handled carefully.
Explain the BST property and how it helps in searching for a value.
Think about how you decide to go left or right when searching.
You got /4 concepts.
Describe what happens if the BST property is broken and why it matters.
Consider how the tree behaves without the ordering rule.
You got /4 concepts.
Practice
(1/5)
1. What is the main property that defines a Binary Search Tree (BST)?
easy
A. Nodes are arranged in a complete binary tree shape
B. Left child nodes have smaller values, right child nodes have larger values
C. All nodes have exactly two children
D. Nodes store only unique values without any order
Solution
Step 1: Understand BST node arrangement
In a BST, each node's left child contains values smaller than the node, and the right child contains values larger than the node.
Step 2: Compare with other tree types
Other options describe different tree properties, but only Left child nodes have smaller values, right child nodes have larger values matches the BST property.
Final Answer:
Left child nodes have smaller values, right child nodes have larger values -> Option B
Quick Check:
BST property = Left smaller, right larger [OK]
Hint: Remember BST orders left < node < right [OK]
Common Mistakes:
Confusing BST with complete binary tree
Thinking all nodes must have two children
Ignoring the order property of BST
2. Which of the following Go struct definitions correctly represents a node in a BST?
easy
A. type Node struct { value int; left Node; right Node }
B. type Node struct { value int; left *int; right *int }
C. type Node struct { value int; left *Node; right *Node }
D. type Node struct { value int; left interface{}; right interface{} }
Solution
Step 1: Check pointer usage for child nodes
In Go, child nodes must be pointers to allow nil and recursive structure. type Node struct { value int; left *Node; right *Node } uses *Node pointers correctly.
Step 2: Identify incorrect struct fields
type Node struct { value int; left Node; right Node } uses Node directly, causing infinite size. type Node struct { value int; left *int; right *int } uses *int which is wrong type. type Node struct { value int; left interface{}; right interface{} } uses interface{}, losing type safety.
Final Answer:
type Node struct { value int; left *Node; right *Node } -> Option C
Quick Check:
Use pointers for recursive structs in Go [OK]
Hint: Use *Node for left and right child pointers [OK]
Common Mistakes:
Using struct fields instead of pointers for children
Using wrong pointer types like *int
Using interface{} losing type safety
3. What will be the in-order traversal output of this BST after inserting values in order: 10, 5, 15, 3, 7?
package main
import "fmt"
type Node struct {
value int
left, right *Node
}
func inOrder(root *Node) {
if root == nil {
return
}
inOrder(root.left)
fmt.Print(root.value, " ")
inOrder(root.right)
}
func insert(root *Node, val int) *Node {
if root == nil {
return &Node{value: val}
}
if val < root.value {
root.left = insert(root.left, val)
} else {
root.right = insert(root.right, val)
}
return root
}
func main() {
var root *Node
vals := []int{10, 5, 15, 3, 7}
for _, v := range vals {
root = insert(root, v)
}
inOrder(root)
}
medium
A. 3 5 7 10 15
B. 10 5 15 3 7
C. 15 10 7 5 3
D. 5 3 7 10 15
Solution
Step 1: Insert values maintaining BST property
Insert 10 as root, 5 to left, 15 to right, 3 left of 5, 7 right of 5.
Step 2: Perform in-order traversal
In-order visits left subtree, node, right subtree. So output is 3 5 7 10 15.
Final Answer:
3 5 7 10 15 -> Option A
Quick Check:
In-order traversal of BST = sorted values [OK]
Hint: In-order traversal of BST gives sorted values [OK]
Common Mistakes:
Confusing pre-order or post-order with in-order
Not inserting nodes correctly in BST
Printing values in insertion order
4. The following Go code tries to insert a value into a BST but fails to correctly insert the value. What is the bug?
func insert(root *Node, val int) *Node {
if root == nil {
return &Node{value: val}
}
if val <= root.value {
insert(root.left, val)
} else {
insert(root.right, val)
}
return root
}
medium
A. Missing assignment to root.left or root.right after recursive insert
B. Using <= instead of < causes infinite recursion
C. Returning root instead of new node causes error
D. Function should not return *Node
Solution
Step 1: Analyze recursive insert calls
The recursive calls insert(root.left, val) and insert(root.right, val) do not assign the returned node back to root.left or root.right.
Step 2: Understand why assignment is needed
Without assignment, new nodes are not linked to the tree, causing incorrect structure.
Final Answer:
Missing assignment to root.left or root.right after recursive insert -> Option A
Quick Check:
Assign recursive insert result to child pointers [OK]
Hint: Always assign recursive insert result to child pointers [OK]
5. You want to check if a binary tree is a valid BST. Which approach correctly verifies the BST property for all nodes?
hard
A. Check only immediate children values against node
B. Check in-order traversal for duplicates only
C. Check tree balance and uniqueness of values
D. Recursively verify all subtree values against node limits
Solution
Step 1: Understand BST validation requirements
BST property requires all nodes in left subtree to be less than current node and all in right subtree to be greater, not just immediate children.
Step 2: Evaluate each option
Recursively verify all subtree values against node limits correctly checks recursively with value limits. Check only immediate children values against node only checks immediate children, which can miss violations deeper in the tree.
Final Answer:
Recursively verify all subtree values against node limits -> Option D
Quick Check:
BST validation = recursive range checks [OK]
Hint: Check all subtree values recursively, not just children [OK]
Common Mistakes:
Checking only immediate children values
Confusing balance with BST property
Assuming no duplicates means valid BST
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.