A BST is a binary tree where each node's left child has a smaller value and the right child has a larger value than the node itself.
Click to reveal answer
beginner
Why is searching faster in a BST compared to a plain binary tree?
Because BST keeps values ordered, it allows skipping half of the tree at each step, making search faster than checking every node.
Click to reveal answer
beginner
What is the main disadvantage of a plain binary tree for searching?
A plain binary tree has no order, so searching may require checking every node, leading to slower performance.
Click to reveal answer
intermediate
How does BST improve insertion compared to a plain binary tree?
BST inserts nodes in a way that keeps the tree ordered, so future searches remain efficient, unlike plain binary trees where insertion order can cause disorder.
Click to reveal answer
beginner
What real-life example helps understand why BST is better than a plain binary tree?
Like a phone book sorted by names (BST), you can quickly find a contact. A random pile of papers (plain binary tree) makes finding a contact slow.
Click to reveal answer
What property does a BST maintain that a plain binary tree does not?
ANodes are arranged randomly
BNodes have exactly two children
CAll nodes have the same value
DNodes are ordered so left < parent < right
✗ Incorrect
BST keeps nodes ordered so left child is smaller and right child is larger than the parent.
Why is searching in a plain binary tree usually slower than in a BST?
ABecause it has no order, so all nodes might be checked
BBecause it has more nodes
CBecause it uses more memory
DBecause it is balanced
✗ Incorrect
Without order, searching may require checking every node, making it slower.
Which operation benefits most from BST's ordering?
ASearching for a value
BPrinting all nodes
CCounting nodes
DDeleting the root
✗ Incorrect
Searching is faster because BST ordering allows skipping parts of the tree.
What happens if you insert nodes in random order in a plain binary tree?
AThe tree stays perfectly balanced
BThe tree may become unbalanced and unordered
CThe tree automatically sorts nodes
DThe tree becomes a BST
✗ Incorrect
Random insertion can cause disorder and imbalance in a plain binary tree.
Which analogy best explains the advantage of BST over a plain binary tree?
AA fast car vs a slow bike
BA messy desk vs a clean desk
CA sorted phone book vs a random pile of papers
DA tall building vs a short building
✗ Incorrect
A sorted phone book (BST) allows quick search, unlike a random pile of papers (plain binary tree).
Explain why a Binary Search Tree is preferred over a plain binary tree for searching operations.
Think about how order helps find things faster.
You got /4 concepts.
Describe how insertion differs between a BST and a plain binary tree and why it matters.
Consider how insertion affects the tree's shape and search.
You got /4 concepts.
Practice
(1/5)
1. Why is a Binary Search Tree (BST) preferred over a plain Binary Tree for searching elements?
easy
A. Because BST uses less memory than a plain Binary Tree
B. Because BST keeps elements in a sorted order allowing faster search
C. Because BST nodes can have more than two children
D. Because BST does not require pointers to child nodes
Solution
Step 1: Understand the structure difference
A plain Binary Tree has no order among nodes, while BST keeps nodes sorted so left child is smaller and right child is larger.
Step 2: Analyze search efficiency
Because BST is sorted, searching can skip half the tree at each step, making search faster than in a plain Binary Tree.
Final Answer:
Because BST keeps elements in a sorted order allowing faster search -> Option B
Quick Check:
Sorted structure = faster search [OK]
Hint: BST is sorted, so search is faster than plain tree [OK]
Common Mistakes:
Thinking BST uses less memory
Confusing number of children per node
Believing BST does not use pointers
2. Which of the following is the correct way to declare a node struct for a BST in Go?
easy
A. type Node struct { value int; left *Node; right *Node }
B. type Node struct { value int; left Node; right Node }
C. type Node struct { value int; left *int; right *int }
D. type Node struct { value int; left interface{}; right interface{} }
Solution
Step 1: Understand pointer usage in Go structs
BST nodes must point to child nodes, so left and right should be pointers to Node type.
Step 2: Check each option
type Node struct { value int; left *Node; right *Node } uses *Node pointers correctly. 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{} which is too generic and not typical for BST.
Final Answer:
type Node struct { value int; left *Node; right *Node } -> Option A
Quick Check:
Pointers to Node = correct struct [OK]
Hint: BST nodes use pointers to child nodes in Go [OK]
Common Mistakes:
Using non-pointer fields causing infinite struct size
Using wrong pointer types like *int
Using interface{} instead of concrete types
3. What will be the output of the following Go code that inserts values into a BST and prints inorder traversal?
package main
import "fmt"
type Node struct {
value int
left, right *Node
}
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 inorder(root *Node) {
if root != nil {
inorder(root.left)
fmt.Print(root.value, " ")
inorder(root.right)
}
}
func main() {
var root *Node
values := []int{7, 3, 9, 1, 5}
for _, v := range values {
root = insert(root, v)
}
inorder(root)
}
medium
A. 1 3 5 7 9
B. 7 3 9 1 5
C. 9 7 5 3 1
D. 3 1 5 7 9
Solution
Step 1: Insert values into BST
Insert 7 as root, then 3 to left, 9 to right, 1 to left of 3, 5 to right of 3.
Step 2: Perform inorder traversal
Inorder visits left subtree, root, then right subtree. So nodes print in sorted order: 1 3 5 7 9.
Final Answer:
1 3 5 7 9 -> Option A
Quick Check:
Inorder traversal = sorted values [OK]
Hint: Inorder traversal of BST prints sorted values [OK]
Common Mistakes:
Confusing preorder or postorder with inorder
Misplacing nodes during insertion
Printing values without spaces
4. The following Go code tries to insert values into a BST but causes a runtime error. What is the error?
package main
import "fmt"
type Node struct {
value int
left, right *Node
}
func insert(root *Node, val int) {
if root == nil {
root = &Node{value: val}
return
}
if val < root.value {
insert(root.left, val)
} else {
insert(root.right, val)
}
}
func main() {
var root *Node
insert(root, 10)
insert(root, 5)
insert(root, 15)
fmt.Println(root)
}
medium
A. Panic due to nil pointer dereference
B. Stack overflow due to infinite recursion
C. Compilation error due to missing return type
D. root remains nil because insert does not update root pointer
Solution
Step 1: Analyze insert function parameter
insert takes root as value, not pointer to pointer, so changes to root inside insert do not affect caller.
Step 2: Understand effect on root variable
root in main remains nil because insert does not update it outside its scope, so tree is never built.
Final Answer:
root remains nil because insert does not update root pointer -> Option D
Quick Check:
Pointer not updated = root nil [OK]
Hint: Pass pointer to pointer to update root in insert [OK]
Common Mistakes:
Assuming root updates inside insert affect main
Ignoring pointer semantics in Go
Confusing runtime error with logical error
5. You want to store a large set of numbers and perform frequent searches. Why would using a BST be better than a plain Binary Tree, and what is the worst-case time complexity of search in a BST?
hard
A. Plain Binary Tree has better search time than BST
B. BST always guarantees O(1) search time due to sorting
C. BST allows faster average search (O(log n)) but worst-case can be O(n) if unbalanced
D. BST uses less memory and has O(n^2) search time in worst case
Solution
Step 1: Compare search efficiency
BST keeps elements sorted, so average search is O(log n), faster than plain Binary Tree which has no order.
Step 2: Consider worst-case scenario
If BST becomes unbalanced (like a linked list), search degrades to O(n) time.
Final Answer:
BST allows faster average search (O(log n)) but worst-case can be O(n) if unbalanced -> Option C
Quick Check:
Average O(log n), worst O(n) in BST [OK]
Hint: BST average search O(log n), worst O(n) if unbalanced [OK]
Common Mistakes:
Thinking BST always has O(1) search
Confusing plain Binary Tree search time
Ignoring unbalanced BST worst case
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.