Bird
Raised Fist0
DSA Goprogramming~5 mins

BST Search Operation in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Binary Search Tree (BST)?
A Binary Search Tree is a tree data structure where each node has at most two children. The left child contains values less than the node, and the right child contains values greater than the node.
Click to reveal answer
beginner
How does the search operation work in a BST?
Start at the root. If the value equals the node's value, return it. If the value is less, search the left subtree. If greater, search the right subtree. Repeat until found or reach a null node.
Click to reveal answer
intermediate
What is the time complexity of searching in a BST?
The average time complexity is O(log n) when the tree is balanced. In the worst case (skewed tree), it can be O(n).
Click to reveal answer
intermediate
Show the Go code snippet for searching a value in a BST.
func searchBST(root *TreeNode, val int) *TreeNode { if root == nil || root.Val == val { return root } if val < root.Val { return searchBST(root.Left, val) } return searchBST(root.Right, val) }
Click to reveal answer
beginner
What happens if the searched value is not in the BST?
The search will continue down the tree until it reaches a null node, then it returns nil indicating the value is not found.
Click to reveal answer
In a BST, where do you search if the target value is less than the current node's value?
ARoot node only
BRight subtree
CBoth subtrees
DLeft subtree
What is the best case time complexity for searching in a balanced BST?
AO(log n)
BO(n)
CO(1)
DO(n log n)
What does the search function return if the value is not found in the BST?
ANil (null)
BThe last visited node
CThe root node
DAn error
Which of these is true about BST search?
ASearch visits nodes randomly
BSearch always visits every node
CSearch only visits nodes along one path from root
DSearch visits nodes in level order
If the BST is skewed (like a linked list), what is the search time complexity?
AO(log n)
BO(n)
CO(1)
DO(n log n)
Explain how the search operation works in a Binary Search Tree step-by-step.
Think about how you decide which way to go at each node.
You got /6 concepts.
    Describe the impact of tree shape on the efficiency of BST search.
    Consider how many nodes you visit in best vs worst cases.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the search operation in a Binary Search Tree (BST) do?
      easy
      A. Finds whether a given value exists in the BST
      B. Deletes a node from the BST
      C. Inserts a new node into the BST
      D. Traverses all nodes in the BST

      Solution

      1. Step 1: Understand the purpose of BST search

        The search operation is designed to check if a specific value is present in the BST.
      2. Step 2: Differentiate from other operations

        Insertion adds nodes, deletion removes nodes, and traversal visits nodes. Search only checks for existence.
      3. Final Answer:

        Finds whether a given value exists in the BST -> Option A
      4. Quick Check:

        Search = Find value [OK]
      Hint: Search checks presence, not insertion or deletion [OK]
      Common Mistakes:
      • Confusing search with insert or delete
      • Thinking search returns the node always
      • Assuming search traverses all nodes
      2. Which of the following is the correct Go function signature for a BST search method that returns a boolean indicating if a value exists?
      easy
      A. func Search(val int) *Node
      B. func (root *Node) Search(val int) bool
      C. func (root Node) Search(val string) bool
      D. func Search(root Node, val int) int

      Solution

      1. Step 1: Identify method receiver and return type

        BST search is usually a method on a pointer to Node and returns bool for found or not.
      2. Step 2: Check parameter types and return type

        func (root *Node) Search(val int) bool uses pointer receiver, int parameter, and bool return which matches the expected signature.
      3. Final Answer:

        func (root *Node) Search(val int) bool -> Option B
      4. Quick Check:

        Pointer receiver + bool return = func (root *Node) Search(val int) bool [OK]
      Hint: Search returns bool, uses pointer receiver for tree nodes [OK]
      Common Mistakes:
      • Using value receiver instead of pointer
      • Wrong parameter or return types
      • Confusing method vs function signatures
      3. Given the BST below and the Go code snippet, what will be the output? BST structure: ``` 10 / \ 5 15 / 3 ``` Go code:
      found := root.Search(3)
      fmt.Println(found)
      medium
      A. true
      B. false
      C. nil
      D. runtime error

      Solution

      1. Step 1: Trace the search for value 3 in the BST

        Starting at root 10, 3 < 10, go left to 5; 3 < 5, go left to 3; found node with value 3.
      2. Step 2: Understand the returned value and print output

        Search returns true because 3 exists; printing true outputs 'true'.
      3. Final Answer:

        true -> Option A
      4. Quick Check:

        3 found in BST = true [OK]
      Hint: Follow BST left/right rules to find value [OK]
      Common Mistakes:
      • Assuming search returns node instead of bool
      • Confusing true/false output
      • Ignoring BST structure when tracing
      4. The following Go code for BST search has a bug. What is the bug?
      func (root *Node) Search(val int) bool {
          if root == nil {
              return false
          }
          if root.Value == val {
              return true
          }
          if val < root.Value {
              return root.Search(val)
          } else {
              return root.Search(val)
          }
      }
      medium
      A. Base case for nil root is missing
      B. Uses value receiver instead of pointer
      C. Returns int instead of bool
      D. Recursive calls do not move to left or right child nodes

      Solution

      1. Step 1: Analyze recursive calls in search method

        Both recursive calls use root.Search(val) without moving to root.Left or root.Right, causing infinite recursion.
      2. Step 2: Identify correct recursive calls

        Should call root.Left.Search(val) if val < root.Value, else root.Right.Search(val) to move down the tree.
      3. Final Answer:

        Recursive calls do not move to left or right child nodes -> Option D
      4. Quick Check:

        Recursive calls must move down tree [OK]
      Hint: Recursive calls must go to left or right child [OK]
      Common Mistakes:
      • Calling search on same node causing infinite loop
      • Missing base case for nil
      • Wrong return types
      5. You want to search for a value in a BST but also count how many nodes you visited during the search. Which modification to the search function is best?
      hard
      A. Use a global variable to count nodes visited during search
      B. Return the node instead of bool and count nodes outside the function
      C. Add a counter parameter passed by pointer and increment it on each node visited
      D. Modify the BST to store counts in each node

      Solution

      1. Step 1: Understand the need to count nodes during search

        Counting nodes visited requires tracking each node checked during recursion.
      2. Step 2: Choose method to count nodes visited

        Passing a pointer to a counter variable and incrementing it at each node visit allows accurate counting without side effects.
      3. Final Answer:

        Add a counter parameter passed by pointer and increment it on each node visited -> Option C
      4. Quick Check:

        Pass counter pointer to track visits [OK]
      Hint: Pass counter pointer to track nodes visited [OK]
      Common Mistakes:
      • Using global variables causing side effects
      • Counting outside search missing recursive visits
      • Changing BST structure unnecessarily
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard