Python | Algorithms | Data Structures | Cyber ​​Security | Networks
38.6K subscribers
779 photos
23 videos
21 files
714 links
This channel is for Programmers, Coders, Software Engineers.

1) Python
2) django
3) python frameworks
4) Data Structures
5) Algorithms
6) DSA

Admin: @Hussein_Sheikho

Ad & Earn money form your channel:
https://telega.io/?r=nikapsOH
Download Telegram
Topic: Data Structures – Trees – Part 1 of 4: Introduction and Binary Trees

---

### 1. What is a Tree in Data Structures?

A tree is a non-linear hierarchical data structure consisting of nodes connected by edges. It's widely used in real-world applications like:

• File systems
• Databases (e.g., B-Trees)
• Compilers (parse trees)
• Artificial intelligence (decision trees)

---

### 2. Terminologies in Trees

Node: Basic unit of a tree
Root: Topmost node (only one)
Parent/Child: A node that connects to another below/above
Leaf: A node with no children
Edge: Connection between parent and child
Subtree: Any child node and its descendants
Depth: Distance from the root to a node
Height: Longest path from a node to a leaf
Degree: Number of children a node has

---

### 3. Binary Tree Basics

A Binary Tree is a tree in which each node has at most two children, referred to as:

Left child
Right child

#### Real-life example:

Imagine a family tree where each person can have two children.

---

### 4. Types of Binary Trees

Full Binary Tree – every node has 0 or 2 children
Perfect Binary Tree – all internal nodes have 2 children, and all leaves are at the same level
Complete Binary Tree – all levels are filled except possibly the last, which is filled from left to right
Skewed Tree – all nodes only have one child (left or right)
Balanced Binary Tree – the height difference of left and right subtrees is minimal

---

### 5. Binary Tree Representation in Python

Using Class & Object:

class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None

# Example
root = Node(1)
root.left = Node(2)
root.right = Node(3)


---

### 6. Tree Traversals

Tree traversal means visiting all the nodes of a tree in a specific order.

Inorder (LNR)
Preorder (NLR)
Postorder (LRN)
Level Order (BFS using queue)

#### Example – Inorder Traversal (Left → Root → Right):

def inorder(root):
if root:
inorder(root.left)
print(root.data, end=" ")
inorder(root.right)


---

### 7. Build a Simple Binary Tree and Traverse It

# Tree Structure:
# 1
# / \
# 2 3
# / \
# 4 5

root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

print("Inorder Traversal:")
inorder(root) # Output: 4 2 5 1 3


---

### 8. Applications of Binary Trees

• Expression evaluation
• Search algorithms (Binary Search Trees)
• Priority queues (Heaps)
• Huffman encoding trees (data compression)
• Syntax trees in compilers

---

### 9. Key Characteristics

• Recursive nature makes tree problems suitable for recursion
• Not sequential – can't be represented with only arrays or lists
• Memory-efficient using pointers in linked structure

---

### 10. Summary

• Trees are hierarchical and non-linear
• Binary trees limit nodes to max 2 children
• Various types of binary trees serve different use cases
• Tree traversal is fundamental for solving tree problems

---

### Exercise

Create a class-based binary tree and implement:
• Inorder, Preorder, and Postorder traversals
• Function to count total nodes and leaf nodes

---

#DSA #BinaryTree #DataStructures #Python #TreeTraversal

https://t.iss.one/DataScience4
7