Advanced Data Structures
- Sum of given range
- Range minimum query
- Lazy Propagation
- Persistent Segment Tree
- Efficiently design Insert, Delete and Median queries on a set
- Range Minimum Query (Square Root Decomposition and Sparse Table)
- Range LCM queries
- Min-Max Range queries in array
- Count and Toggle queries on Binary array
- Querying maximum number of divisors that a number in a given range has
- LCA in a binary tree using RMQ
- GCDs of given index ranges in an array
- Smallest sub-array with given GCD
- Largest Rectangular Area in a Histogram
- Heavy Light Decomposition | Set 1 (Introduction)
- Heavy Light Decomposition | Set 2 (Implementation)
- Reconstructing Segment Tree
- Longest Common Extension / LCE | Set 1 (Introduction and Naive Method)
- Longest Common Extension / LCE | Set 2 ( Reduction to RMQ)
- Longest Common Extension / LCE | Set 3 (Segment Tree Method)
- Trie | (Insert and Search)
- Trie | (Delete)
- Longest prefix matching – A Trie based solution in Java
- Pattern Searching using a Trie of all Suffixes
- Find shortest unique prefix for every word in a given list
- Longest Common Prefix
- Print all words matching a pattern in CamelCase Notation Dictonary
- Implement a Phone Directory
- Construct a unique matrix n x n for an input n
- Print unique rows in a given boolean matrix
- Count of distinct substrings of a string using Suffix Trie
- Find pair of rows in a binary matrix that has maximum bit difference
- Minimum XOR Value Pair
- Find the maximum subarray XOR in a given array
- Weighted Prefix Search
- Boggle
- Print all valid words that are possible using Characters of Array
- Find the k most frequent words from a file
- Palindrome pair in an array of words (or strings)
- Word formation using concatenation of two dictionary words
- Given a sequence of words, print all anagrams together
- How to Implement Reverse DNS Look Up Cache?
- How to Implement Forward DNS Look Up Cache?
- Binary Indexed Tree or Fenwick Tree
- Two Dimensional Binary Indexed Tree or Fenwick Tree
- Binary Indexed Tree : Range Updates and Point Queries
- Binary Indexed Tree : Range Update and Range Queries
- Count inversions in an array
- Count Inversions of size three in a give array
- Count inversion pairs in a matrix
- Counting Triangles in a Rectangular space using BIT
- Number of triangles amongst horizontal and vertical line segments
- Querying the number of distinct colors in a subtree of a colored tree using BIT
- Queries on substring palindrome formation
- proto van Emde Boas Trees | Background and Introduction
- Suffix Array Introduction
- Suffix Array nLogn Algorithm
- kasai’s Algorithm for Construction of LCP array from Suffix Array
- Suffix Tree Introduction
- Ukkonen’s Suffix Tree Construction – Part 1
- Ukkonen’s Suffix Tree Construction – Part 2
- Ukkonen’s Suffix Tree Construction – Part 3
- Ukkonen’s Suffix Tree Construction – Part 4
- Ukkonen’s Suffix Tree Construction – Part 5
- Ukkonen’s Suffix Tree Construction – Part 6
- Generalized Suffix Tree
- Suffix Tree Application 1 – Substring Check
- Suffix Tree Application 2 – Searching All Patterns
- Suffix Tree Application 3 – Longest Repeated Substring
- Suffix Tree Application 4 – Build Linear Time Suffix Array
- Suffix Tree Application 5 – Longest Common Substring
- Suffix Tree Application 6 – Longest Palindromic Substring
- Print Kth character in sorted concatenated substrings of a string
- Red-Black Tree | Set 1 (Introduction)
- Red Black Tree Insertion
- Red-Black Tree Deletion
- C Program for Red Black Tree Insertion
- ScapeGoat Tree | (Introduction and Insertion)
- Treap | Set 1 (A Randomized Binary Search Tree)
- Treap | Set 2 (Implementation of Search, Insert and Delete)
- Maximum subarray sum modulo m
- Find N’th item in a set formed by sum of two arrays
- Count smaller elements on right side
- Sort an array according to absolute difference with given value
- Maximum product of an increasing subsequence of size 3
- Merge Two Balanced Binary Search Trees
- How to sort a big array with many repetitions?
- How to determine if a binary tree is height-balanced?
- Maximum Occurrence in a Given Range
- How to handle duplicates in Binary Search Tree?
- last unique URL from long list of URLs in single traversal
- Mirror of n-ary Tree
- Check mirror in n-ary tree
- Diameter of an N-ary tree
- Depth of an N-Ary tree
- Height of n-ary tree if parent array is given
- Second Largest element in n-ary tree
- Diameter of n-ary tree using BFS
- Number of ways to traverse an N-ary tree
- Number of nodes greater than a given value in n-ary tree
- Number of children of given node in n-ary Tree
- Number of siblings of a given Node in n-ary Tree
- Next Larger element in n-ary tree
- Immediate Smaller element in an N-ary Tree
- Sum of all elements of N-ary Tree
- Serialize and Deserialize an N-ary Tree
- Subtrees formed after bursting nodes
- Locking and Unlocking of Resources arranged in the form of n-ary Tree
- Creating a tree with Left-Child Right-Sibling Representation
- LCA for general or n-ary trees (Sparse Matrix DP approach < O(nlogn), O(logn)>)
- Sqrt (or Square Root) Decomposition | Set 2 (LCA of Tree in O(sqrt(height)) time)
- LCA for n-ary Tree | Constant Query O(1)
- Tarjan’s off-line lowest common ancestors algorithm
- Left-Child Right-Sibling Representation of Tree
- DFS for a n-ary tree (acyclic graph) represented as adjacency list
- Node having maximum sum of immediate children and itself in n-ary tree
- Given a n-ary tree, count number of nodes which have more number of children than parents
- General Tree (Each node can have arbitrary number of children) Level Order Traversal
- Palindromic Tree | Introduction & Implementation
- Ternary Search Tree
- Interval Tree
- BK-Tree | Introduction & Implementation
- Ropes Data Structure (Fast String Concatenation)
- Summed Area Table – Submatrix Summation
- Implement LRU Cache
- Sort numbers stored on different machines
- Substring with highest frequency length product
- Find whether a subarray is in form of a mountain or not
- Find all possible interpretations of an array of digits
- How to design a tiny URL or URL shortener?
- Design a data structure that supports insert, delete, search and getRandom in constant time
- Design an efficient data structure for given operations
- Tournament Tree (Winner Tree) and Binary Heap
- Second minimum element using minimum comparisons
- Binomial Heap
- Fibonacci Heap
- Leftist Heap
- Decision Trees – Fake (Counterfeit) Coin Puzzle (12 Coin Puzzle)
- Spaghetti Stack
- Data Structure for Dictionary and Spell Checker
- Cartesian Tree
- Cartesian Tree Sorting
- Sparse Set
- Centroid Decomposition of Tree
- Gomory-Hu Tree
Data Structures are used to store and manage data in an efficient and organised way for faster and easy access and modification of Data. Some of the basic data structures are Arrays, LinkedList, Stacks, Queues etc.
This page will contain some of the complex and advanced Data Structures like Disjoint Sets, Self-Balancing Trees, Segment Trees, Tries etc.
Data Structure and Algorithms Course
‘Recent Articles’
Topics:
Suffix Array and Suffix Tree :
AVL :
Splay Tree :
B Tree :
Red Black Tree :
ScapeGoat Tree and Treap :
Problems :
‘Quiz’ on Balanced Binary Searched Trees
If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to [email protected]. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above