Open In App

Advanced Data Structures

Last Updated : 22 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Advanced Data Structures refer to complex and specialized arrangements of data that enable efficient storage, retrieval, and manipulation of information in computer science and programming. These structures go beyond basic data types like arrays and lists, offering sophisticated ways to organize and manage data for optimal performance in various algorithms and applications.

This page will contain some of the complex and Advanced Data Structures like Disjoint Sets, Self-Balancing Trees, Segment Trees, Tries etc.

Advanced Lists:

  1. Generic Linked List in C
  2. Memory efficient Doubly Linked List
  3. XOR Linked List | Set 1
  4. XOR Linked List | Set 2
  5. Skip List
  6. Self-Organizing List
  7. Unrolled Linked List

n-ary Tree:

  1. Generic Trees (N-ary Tree)
  2. Mirror of n-ary Tree
  3. Diameter of an N-ary tree
  4. Depth of an N-Ary tree
  5. Height of n-ary tree if parent array is given
  6. Number of ways to traverse an N-ary tree
  7. Number of siblings of a given Node in n-ary Tree
  8. Next Larger element in n-ary tree
  9. Serialize and Deserialize an N-ary Tree
  10. DFS for a n-ary tree (acyclic graph) represented as adjacency list

Self Balancing BSTs:

Trie:

Segment Tree:

Binary Indexed Tree:

Suffix Array and Suffix Tree

K-Dimensional Tree:

Disjoint Set:

Some other Data Structure:

Quick Links:

Recomended:



Previous Article
Next Article

Similar Reads

Data Structures | Linked List | Question 1
What does the following function do for a given Linked List with first node as head? void fun1(struct node* head) { if(head == NULL) return; fun1(head->next); printf(\"%d \", head->data); } (A) Prints all nodes of linked lists (B) Prints all nodes of linked list in reverse order (C) Prints alternate nodes of Linked List (D) Prints alternate n
2 min read
Data Structures | Stack | Question 1
Following is C like pseudo code of a function that takes a number as an argument, and uses a stack S to do processing. void fun(int n) { Stack S; // Say it creates an empty stack S while (n > 0) { // This line pushes the value of n%2 to stack S push(&S, n%2); n = n/2; } // Run while Stack S is not empty while (!isEmpty(&S)) printf("
1 min read
Data Structures | Queue | Question 1
Following is C like pseudo-code of a function that takes a Queue as an argument, and uses a stack S to do processing. C/C++ Code void fun(Queue *Q) { Stack S; // Say it creates an empty stack S // Run while Q is not empty while (!isEmpty(Q)) { // deQueue an item from Q and push the dequeued item to S push(&S, deQueue(Q)); } // Run while Stack S is
1 min read
Data Structures | Stack | Question 2
Which one of the following is an application of Stack Data Structure? (A) Managing function calls (B) The stock span problem (C) Arithmetic expression evaluation (D) All of the above Answer: (D) Explanation: See http://en.wikipedia.org/wiki/Stack_(abstract_data_type)#Applications
1 min read
Data Structures | Linked List | Question 2
Which of the following points is/are true about Linked List data structure when it is compared with array? (A) Arrays have better cache locality that can make them better in terms of performance. (B) It is easy to insert and delete elements in Linked List (C) Random access is not allowed in a typical implementation of Linked Lists (D) The size of a
2 min read
Data Structures | Linked List | Question 3
Consider the following function that takes reference to head of a Doubly Linked List as parameter. Assume that a node of doubly linked list has previous pointer as prev and next pointer as next. C/C++ Code void fun(struct node **head_ref) { struct node *temp = NULL; struct node *current = *head_ref; while (current != NULL) { temp = current->prev; c
2 min read
Data Structures | Queue | Question 2
Which one of the following is an application of Queue Data Structure? (A) When a resource is shared among multiple consumers. (B) When data is transferred asynchronously (data not necessarily received at same rate as sent) between two processes (C) Load Balancing (D) All of the above Answer: (D) Explanation: (A) When a resource is shared among mult
2 min read
Data Structures | Binary Trees | Question 1
Which of the following is true about Binary Trees? (A) Every binary tree is either complete or full. (B) Every complete binary tree is also a full binary tree. (C) Every full binary tree is also a complete binary tree. (D) No binary tree is both complete and full. (E) None of the above Answer: (E)Explanation: A full binary tree (sometimes proper bi
2 min read
Data Structures | Tree Traversals | Question 1
Following function is supposed to calculate the maximum depth or height of a Binary tree -- the number of nodes along the longest path from the root node down to the farthest leaf node. int maxDepth(struct node* node) { if (node==NULL) return 0; else { /* compute the depth of each subtree */ int lDepth = maxDepth(node->left); int rDepth = maxDep
1 min read
Data Structures | Binary Trees | Question 15
If arity of operators is fixed, then which of the following notations can be used to parse expressions without parentheses? a) Infix Notation (Inorder traversal of a expression tree) b) Postfix Notation (Postorder traversal of a expression tree) c) Prefix Notation (Preorder traversal of a expression tree) (A) b and c (B) Only b (C) a, b and c (D) N
1 min read
three90RightbarBannerImg