Topics array backtracking bfs binary indexed tree binary search binary tree bitwise bst bucket sort c# dfs divide and conquer double pointer double pointers dp easy game theory greedy hackerrank hash table heap in-order javascript kmp leetcode linked list math medium memorization monotonic stack oop post-order pre-order presum priority queue queue rabin-karp reservoir sampling simulation sliding window sort stack string topological sort tree trie union find wtf