Tag Archives: DFS

๐Ÿ“Š Graphs in Computer Science


๐Ÿงฉ What is a Graph?

Image
Image
Image

A graph is a powerful non-linear data structure used to represent relationships between objects. It consists of a set of vertices (nodes) and a set of edges (connections) that link pairs of vertices.

Graphs are used to model real-world systems such as:

  • Social networks
  • Transportation systems
  • Computer networks
  • Web page links

Formally, a graph is defined as:

G = (V, E)

Where:

  • V โ†’ Set of vertices
  • E โ†’ Set of edges

๐Ÿง  Key Terminology in Graphs

Image
Image
Image
Image
  • Vertex (Node) โ†’ Basic unit of a graph
  • Edge โ†’ Connection between vertices
  • Degree โ†’ Number of edges connected to a vertex
  • Path โ†’ Sequence of vertices connected by edges
  • Cycle โ†’ Path that starts and ends at the same vertex
  • Connected Graph โ†’ Every vertex is reachable
  • Disconnected Graph โ†’ Some vertices are isolated
  • Weighted Graph โ†’ Edges have weights/costs
  • Unweighted Graph โ†’ No weights on edges

๐Ÿ”— Types of Graphs


๐Ÿ”น 1. Undirected Graph

Image
Image
Image
Image

Edges have no direction:

A โ€” B

๐Ÿ”น 2. Directed Graph (Digraph)

Image
Image
Image
Image

Edges have direction:

A โ†’ B

๐Ÿ”น 3. Weighted Graph

Image
Image
Image
Image

Edges carry weights.


๐Ÿ”น 4. Unweighted Graph

Image
Image
Image

All edges are equal.


๐Ÿ”น 5. Cyclic Graph

Image
Image
Image
Image

Contains cycles.


๐Ÿ”น 6. Acyclic Graph

Image
Image
Image
Image

No cycles present.


๐Ÿ”น 7. Complete Graph

Image
Image
Image
Image

Every vertex connects to every other vertex.


๐Ÿ”น 8. Bipartite Graph

Image
Image
Image
Image

Vertices divided into two sets.


๐Ÿ”น 9. Sparse vs Dense Graph

Image
Image
Image
Image
  • Sparse โ†’ Few edges
  • Dense โ†’ Many edges

๐Ÿงฑ Graph Representation


๐Ÿ”น 1. Adjacency Matrix

Image
Image
Image
Image

2D matrix representation.


๐Ÿ”น 2. Adjacency List

Image
Image
Image
Image

Stores neighbors of each node.


โš™๏ธ Graph Operations


๐Ÿ”น 1. Traversal

Image
Image
Image

DFS (Depth First Search)

  • Uses stack
  • Explores deep

BFS (Breadth First Search)

  • Uses queue
  • Explores level by level

๐Ÿ”น 2. Searching

Finding a node or path.


๐Ÿ”น 3. Insertion & Deletion

Adding/removing vertices or edges.


๐Ÿงฎ Graph Algorithms


๐Ÿ”น 1. Dijkstraโ€™s Algorithm

Image
Image
Image
Image

Finds shortest path in weighted graphs.


๐Ÿ”น 2. Bellman-Ford Algorithm

Image
Image
Image

Handles negative weights.


๐Ÿ”น 3. Floyd-Warshall Algorithm

Image
Image
Image
Image

All-pairs shortest path.


๐Ÿ”น 4. Kruskalโ€™s Algorithm

Image
Image
Image

Minimum spanning tree.


๐Ÿ”น 5. Primโ€™s Algorithm

Image
Image
Image
Image

Another MST algorithm.


๐Ÿ”น 6. Topological Sorting

Image
Image
Image
Image

Used in DAGs.


๐Ÿงฎ Time Complexity Overview

AlgorithmComplexity
BFSO(V + E)
DFSO(V + E)
DijkstraO((V+E) log V)
KruskalO(E log E)

โšก Advantages of Graphs

  • Flexible structure
  • Models real-world relationships
  • Supports complex algorithms
  • Scalable

โš ๏ธ Disadvantages of Graphs

  • Complex implementation
  • High memory usage
  • Difficult debugging

๐Ÿง  Advanced Graph Concepts


๐Ÿ”น 1. Strongly Connected Components

Image
Image
Image
Image

๐Ÿ”น 2. Network Flow

Image
Image
Image
Image

๐Ÿ”น 3. Graph Coloring

Image
Image
Image

๐Ÿ”น 4. Eulerian & Hamiltonian Paths

Image
Image
Image
Image

๐Ÿ”ฌ Applications of Graphs


๐ŸŒ 1. Social Networks

Image
Image
Image
Image

๐Ÿ—บ๏ธ 2. GPS Navigation

Image
Image
Image
Image

๐ŸŒ 3. Internet & Networking

Image
Image
Image
Image

๐Ÿง  4. Artificial Intelligence

Image
Image
Image
Image

๐Ÿงฌ 5. Bioinformatics

Image
Image
Image
Image

๐Ÿ” Graph vs Tree

FeatureGraphTree
CyclesAllowedNot allowed
ConnectivityNot necessaryAlways connected
StructureGeneralHierarchical

๐Ÿงช Memory Representation

Graph stored as:

  • Matrix
  • List
  • Edge list

๐Ÿš€ Real-World Importance

Graphs are essential in:

  • Machine learning
  • Networking
  • Logistics
  • Game development
  • Data science

๐Ÿงพ Conclusion

Graphs are among the most powerful and flexible data structures in computer science. They allow representation of complex relationships and are the foundation of many advanced algorithms.

Mastering graphs is crucial for solving real-world problems, especially in areas like AI, networking, and optimization.


๐Ÿท๏ธ Tags

๐ŸŒณ Trees in Computer Science


๐Ÿงฉ What is a Tree Data Structure?

Image
Image
Image
Image

A tree is a widely used non-linear data structure that represents hierarchical relationships between elements. Unlike linear structures such as arrays, stacks, and queues, trees organize data in a branching structure resembling an inverted tree.

In a tree:

  • The topmost node is called the root
  • Each node may have child nodes
  • Nodes are connected by edges
  • There is exactly one path between any two nodes

Trees are fundamental in computer science and are used in databases, file systems, artificial intelligence, networking, and more.


๐Ÿง  Key Terminology in Trees

Image
Image
Image
Image

Understanding trees requires familiarity with key terms:

  • Node โ†’ Basic unit of a tree
  • Root โ†’ Topmost node
  • Edge โ†’ Connection between nodes
  • Parent โ†’ Node with children
  • Child โ†’ Node derived from another node
  • Leaf Node โ†’ Node with no children
  • Internal Node โ†’ Node with at least one child
  • Height โ†’ Longest path from root to leaf
  • Depth โ†’ Distance from root
  • Subtree โ†’ A tree within a tree

๐ŸŒฒ Basic Structure of a Tree

        A
      / | \
     B  C  D
    / \     \
   E   F     G
  • A is root
  • B, C, D are children
  • E, F, G are leaf nodes

๐Ÿ”— Types of Trees


๐Ÿ”น 1. General Tree

Image
Image
Image
Image

A general tree allows any number of children per node.


๐Ÿ”น 2. Binary Tree

Image
Image
Image
Image

Each node has at most two children:

  • Left child
  • Right child

๐Ÿ”น 3. Full Binary Tree

Image
Image
Image
Image

Every node has either:

  • 0 children OR
  • 2 children

๐Ÿ”น 4. Complete Binary Tree

Image
Image
Image
Image

All levels are filled except possibly the last, which is filled from left to right.


๐Ÿ”น 5. Perfect Binary Tree

Image
Image
Image
Image

All internal nodes have two children and all leaves are at the same level.


๐Ÿ”น 6. Binary Search Tree (BST)

Image
Image
Image
Image

Properties:

  • Left subtree โ†’ smaller values
  • Right subtree โ†’ larger values

๐Ÿ”น 7. AVL Tree (Self-Balancing Tree)

Image
Image
Image
Image

Maintains balance using rotations.


๐Ÿ”น 8. Red-Black Tree

Image
Image
Image
Image

A balanced tree with coloring rules.


๐Ÿ”น 9. Heap (Binary Heap)

Image
Image
Image
Image

Used in priority queues:

  • Max Heap
  • Min Heap

๐Ÿ”น 10. B-Tree

Image
Image
Image
Image

Used in databases and file systems.


๐Ÿ”น 11. Trie (Prefix Tree)

Image
Image
Image
Image

Used for string searching and auto-complete.


โš™๏ธ Tree Operations


๐Ÿ”น 1. Insertion

Image
Image
Image
Image

Adding nodes while maintaining properties.


๐Ÿ”น 2. Deletion

Image
Image
Image
Image

Cases:

  • Leaf node
  • One child
  • Two children

๐Ÿ”น 3. Searching

def search(root, key):
    if root is None or root.value == key:
        return root
    if key < root.value:
        return search(root.left, key)
    return search(root.right, key)

๐Ÿ”„ Tree Traversal Techniques

Image
Image
Image
Image

๐Ÿ”น Depth First Search (DFS)

  • Inorder (Left, Root, Right)
  • Preorder (Root, Left, Right)
  • Postorder (Left, Right, Root)

๐Ÿ”น Breadth First Search (BFS)

  • Level-order traversal using queue

๐Ÿงฎ Time Complexity

OperationBST AverageBST Worst
SearchO(log n)O(n)
InsertO(log n)O(n)
DeleteO(log n)O(n)

Balanced trees maintain O(log n).


โšก Advantages of Trees

  • Efficient searching and sorting
  • Hierarchical representation
  • Dynamic size
  • Flexible structure

โš ๏ธ Disadvantages of Trees

  • Complex implementation
  • More memory usage (pointers)
  • Balancing overhead

๐Ÿง  Advanced Tree Concepts


๐Ÿ”น 1. Segment Tree

Image
Image
Image
Image

Used for range queries.


๐Ÿ”น 2. Fenwick Tree (Binary Indexed Tree)

Image
Image
Image

Efficient prefix sums.


๐Ÿ”น 3. Suffix Tree

Image
Image
Image

Used in string algorithms.


๐Ÿ”ฌ Applications of Trees


๐Ÿ’ป 1. File Systems

Image
Image
Image
Image

Directories organized as trees.


๐ŸŒ 2. HTML DOM

Image
Image
Image
Image

Web pages structured as trees.


๐Ÿง  3. Artificial Intelligence

Image
Image
Image
Image

Decision trees in ML.


๐ŸŽฎ 4. Game Development

Image
Image
Image
Image

Game decision trees.


๐Ÿ“Š 5. Databases

Image
Image

Indexing using B-Trees.


๐Ÿ” Tree vs Other Data Structures

FeatureTreeArrayLinked List
StructureHierarchicalLinearLinear
AccessModerateFastSlow
FlexibilityHighLowHigh

๐Ÿงช Memory Representation

Each node contains:

  • Data
  • Pointers to children

Example:

Node:
[Data | Left Pointer | Right Pointer]

๐Ÿš€ Real-World Importance

Trees are essential in:

  • Databases
  • Operating systems
  • Networking
  • Artificial intelligence
  • Compilers

๐Ÿงพ Conclusion

Trees are one of the most powerful and versatile data structures in computer science. Their hierarchical nature makes them suitable for a wide range of applications, from simple data organization to complex algorithms in AI and databases.

Mastering trees is a critical step toward becoming proficient in data structures and algorithms.


๐Ÿท๏ธ Tags