# Trees in Data Structure

Mentor: Shailendra Chauhan
Duration : 00:06:00

## What is a Tree?

A tree in data structures is a collection of items or things known as nodes that are connected by edges and have a hierarchical connection with one another. A tree is a nonlinear data structure that enables efficient data storage and retrieval. A tree consists of nodes connected by connections. Hierarchical data is represented using this format.

## Components of a Tree

• Root: The root of a tree is a node that has no parent node, serving as the tree's starting point.
• Children: A tree's child is a node with only one incoming link, which is the parent node. Siblings refer to two children who share the same parent.
• Parent: One or more child nodes are connected to the parent node via an outbound link.
• Leaf: A leaf has a parent node but no child nodes, indicating that it is the tree's endpoint.
• Subtree: A subtree is a smaller tree that exists within a larger tree.
• Depth: The depth of a node is the number of edges that connect it to the root.
• Height: Node height is defined as the number of edges along the longest path from a node to a leaf node.

## Why is a tree called a non-linear data structure?

A tree's data is not stored sequentially, or linearly. Instead, they are placed on numerous layers, creating a hierarchical structure. As a result, the tree is considered a nonlinear data structure.

## Representation of a Tree in Data Structures

A tree is made up of a root and zero or more subtrees, each with an edge from the root to the root of the next subtree.

## Types Of Trees in Data Structures

• Binary Tree
• Binary Search Tree
• AVL Tree
• Red Black Tree

### Binary Tree

A binary tree is a hierarchical data structure made up of nodes with at most two children, left and right. It does not always preserve a certain ordering of elements.

### Binary Search Tree

A binary search tree is one in which the left child of each node is less than its parent and the right child is greater than its parent. This characteristic allows for efficient searching, insertion, and deletion operations.

### AVL Tree

A self-balancing binary search tree with no more than one difference in height between the left and right subtrees of every node. To maintain this property, rotations are performed during insertion or deletion, resulting in logarithmic time complexity for simple operations.

### Red-Black Tree

A sort of self-balancing binary search tree that follows stronger balancing rules than AVL trees and guarantees logarithmic time complexity for insertion, deletion, and search operations. It accomplishes balance by enforcing additional features, such as making nodes red or black and conducting rotations and color flips as needed.

## Properties of the Tree Data Structure

• Number of edges: A tree with N nodes has (N-1) edges, which provide a single path between each two nodes.
• Depth of a node: A node's depth is the length of the path from the root to the node as measured by edges.
• Height of a node: A node's height is the length of the longest path from it to a leaf.
• Height of the Tree: The tree's height is the longest path from the root to a leaf node.
• Degree of a Node: The number of subtrees connected to a node; leaf nodes have a degree of zero, whereas the tree's degree is the maximum among its nodes.

## Operations of Tree

• Traversal: Traversal is the process of visiting all tree nodes in a predetermined order.
• Insertion: Insertion is the process of adding a new node with a specified value while keeping the tree attributes intact.
• Deletion: Deletion is the process of removing a node with a certain value while keeping tree integrity.
• Search: Locating a specified value in the tree using tree structure rules (e.g., binary search tree property).

## Application of Tree Data Structure

• File System: Effective file navigation and organization.
• Data compression: Huffman coding uses binary trees to encode character frequencies, reducing storage requirements.
• Compiler Design: Syntax trees represent program structure in compiler design.
• Database Indexing: Tree structures like B-trees improve data retrieval in database indexing.

## Advantages of Tree Data Structure

• Trees provide efficient searching, with average times of O(log n) for balanced trees such as AVL.
• They offer a hierarchical structure for easier navigation and data administration.
• Their recursive structure facilitates traversal and manipulation using recursive algorithms.

## Disadvantages of Tree Data Structure

• Unbalanced trees might result in inefficient search speeds due to skewness in height.
• Trees demand more memory than arrays and linked lists, particularly for larger trees.
• Tree implementation and manipulation can be complicated, necessitating extensive algorithmic knowledge.
Still have some questions? Let's discuss.