0
0
DSA Goprogramming~20 mins

Kth Smallest Element in BST in DSA Go - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Kth Smallest Element Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Kth Smallest Element Function
What is the output of the following Go code that finds the 3rd smallest element in a BST?
DSA Go
package main
import "fmt"
type TreeNode struct {
    Val int
    Left *TreeNode
    Right *TreeNode
}

func kthSmallest(root *TreeNode, k int) int {
    stack := []*TreeNode{}
    current := root
    count := 0
    for current != nil || len(stack) > 0 {
        for current != nil {
            stack = append(stack, current)
            current = current.Left
        }
        current = stack[len(stack)-1]
        stack = stack[:len(stack)-1]
        count++
        if count == k {
            return current.Val
        }
        current = current.Right
    }
    return -1
}

func main() {
    root := &TreeNode{Val: 5}
    root.Left = &TreeNode{Val: 3}
    root.Right = &TreeNode{Val: 6}
    root.Left.Left = &TreeNode{Val: 2}
    root.Left.Right = &TreeNode{Val: 4}
    root.Left.Left.Left = &TreeNode{Val: 1}
    fmt.Println(kthSmallest(root, 3))
}
A4
B2
C3
D5
Attempts:
2 left
💡 Hint
Remember that an in-order traversal of a BST visits nodes in ascending order.
🧠 Conceptual
intermediate
1:30remaining
Understanding Kth Smallest Element in BST
Which property of a Binary Search Tree (BST) allows the kth smallest element to be found efficiently using in-order traversal?
AIn-order traversal of BST visits nodes in ascending order
BBST nodes are stored in a sorted linked list
CBST nodes have pointers to their parents
DBST is always a balanced tree
Attempts:
2 left
💡 Hint
Think about the order in which nodes are visited during in-order traversal.
🔧 Debug
advanced
2:00remaining
Identify the Error in Kth Smallest Element Code
What error will the following Go code produce when trying to find the 2nd smallest element in a BST?
DSA Go
package main
import "fmt"
type TreeNode struct {
    Val int
    Left *TreeNode
    Right *TreeNode
}

func kthSmallest(root *TreeNode, k int) int {
    var count int
    var result int
    var inorder func(node *TreeNode)
    inorder = func(node *TreeNode) {
        if node == nil {
            return
        }
        inorder(node.Left)
        count++
        if count == k {
            result = node.Val
            return
        }
        inorder(node.Right)
    }
    inorder(root)
    return result
}

func main() {
    root := &TreeNode{Val: 3}
    root.Left = &TreeNode{Val: 1}
    root.Right = &TreeNode{Val: 4}
    root.Left.Right = &TreeNode{Val: 2}
    fmt.Println(kthSmallest(root, 2))
}
AThe code returns 2 correctly
BThe code returns 1 instead of 2
CThe code causes a stack overflow
DThe code returns 0 instead of 2
Attempts:
2 left
💡 Hint
Check if the recursion stops after finding the kth element.
Predict Output
advanced
2:00remaining
Output of Modified Kth Smallest Element Code
What is the output of this Go code that finds the 4th smallest element in a BST with duplicate values?
DSA Go
package main
import "fmt"
type TreeNode struct {
    Val int
    Left *TreeNode
    Right *TreeNode
}

func kthSmallest(root *TreeNode, k int) int {
    stack := []*TreeNode{}
    current := root
    count := 0
    for current != nil || len(stack) > 0 {
        for current != nil {
            stack = append(stack, current)
            current = current.Left
        }
        current = stack[len(stack)-1]
        stack = stack[:len(stack)-1]
        count++
        if count == k {
            return current.Val
        }
        current = current.Right
    }
    return -1
}

func main() {
    root := &TreeNode{Val: 5}
    root.Left = &TreeNode{Val: 3}
    root.Right = &TreeNode{Val: 6}
    root.Left.Left = &TreeNode{Val: 3}
    root.Left.Right = &TreeNode{Val: 4}
    fmt.Println(kthSmallest(root, 4))
}
A3
B4
C5
D-1
Attempts:
2 left
💡 Hint
Duplicates appear in in-order traversal as repeated values.
🚀 Application
expert
2:30remaining
Optimizing Kth Smallest Element Search with Augmented BST
You want to find the kth smallest element in a BST efficiently multiple times. Which data structure modification helps achieve O(log n) time per query?
AStore subtree sizes at each node to guide search
BConvert BST to a sorted array and binary search
CUse a hash map to store node values and their ranks
DPerform full in-order traversal each time to find kth element
Attempts:
2 left
💡 Hint
Think about augmenting nodes with extra info to skip parts of the tree.