### Introduction to Binary Trees

Trees can have any number of offspring, but the most basic and typical kind is the binary tree, in which each node has a maximum of two offspring (called left child and right child). In a binary tree, a node can have 0, 1, or 2 children, to put it another way. Hence, the root node, the left sub-tree connected by a left pointer, and the right sub-tree connected by a right pointer are the three basic parts of a binary tree. The three components are separate or lack any nodes in common.

- The node at the very top of the tree is known as the root node.
- A node with no children is called a leaf node.
- A node that has at least one child node is said to be internal.

**Binary Tree Terminologies**

- Node: A node is a final node in a tree.
- Root: The uppermost node of a tree.
- Parent: A parent node is any node in a tree (other than the root) that has at least one sub-node of its own.
- Child: While going away from the root, a child node is a node that immediately descended from a parent node.
- Leaf Nodes: These are exterior nodes. The term “leaf node” refers to a node without any children.
- Internal Node: These are inner nodes with at least one child, as the name implies.
- Depth of Tree: Tree depth is determined by how many edges there are from the node to the root of the tree.
- Height of Tree: The distance between the node and the deepest leaf measured in edges. Moreover, the tree’s height

Types of Binary Trees

There are four types of binary trees are described below:

**Full Binary Tree:**A binary tree is considered to be full if each node contains either two children or none at all. A strictly Binary Tree is another name for a full binary tree. The offspring of each node in the tree is either 0 or 2. Mathematical expressions are represented by a Full binary tree.**Complete Binary Tree:**A tree is said to be a complete binary tree if every level of the tree has all of the keys except for the last level filled in completely. A perfect binary tree is another name for a complete binary tree. Every internal node in a complete binary tree has precisely two offspring, and all leaf nodes are at the same level. For instance, there must be 22 = 4 nodes at Level 2 and 23 = 8 nodes at Level 3.**Skewed Binary Tree:**A tree is considered to be skewed if either the left or right child nodes dominate it. Every node in a skewed binary tree has just one child node, except one. The last node has no child. The majority of nodes in a left-skewered tree have left children without corresponding right children. The majority of nodes in a right-skewed tree have right children without corresponding left children.-
**Extended Binary Tree:**Every null subtree of the original tree’s extended binary tree is replaced with a specific node. The internal node is represented by the empty circle and the exterior node by the filled circle. The special nodes are exterior, whereas the nodes from the original tree are internal nodes. In the extended binary tree, every leaf node is an exterior node, and every internal node has exactly two offspring. It presents the finished binary tree as the output.

**Traversing Binary Trees**

One frequent operation on data structures is traversal. Every single element in a data structure is “visited” (or accessed) at least once during this procedure. It’s possible to do this to display every element or to operate on every element.

For instance, to go forward through a singly-linked list, we start with the first (front) node and do so by using the next pointer held in each node until we reach the list’s end (signified by a next pointer with the special value null ptr). The reverse order of a doubly-linked list can also be navigated by starting at the last (back) node and moving backward through the list by using the prior pointer that is held in each node, halting when we reach the list’s beginning (signified by a prev pointer with the special value null ptr).

Similarly, moving forward or backward through an array is simple and may be accomplished by starting with either the first or last element and then increasing or decreasing a subscript or pointer to the element.

Binary trees, on the other hand, can be navigated in a variety of ways. Preorder, inorder, postorder, and level order are the four different types of traversals.

**Binary Search Trees**

A sophisticated approach for examining nodes and their left and right branches—which are portrayed as branches of a tree—and delivering values is called a binary search tree. The BST was created utilising the basic binary search algorithm’s architecture, enabling quicker node lookups, insertions, and removals.

A BST is made up of several nodes and has the following characteristics:

- The tree’s nodes are depicted as having a parent-child relationship.
- A parent node may have a maximum of two subnodes or subtrees on its left and right sides or zero child nodes.
- A binary search tree, commonly referred to as a sub-tree, has sub-branches to the right and left of it.
- Key-value pairs are used to connect all of the nodes.
- The left subtree’s nodes have keys that are smaller than the parent node’s keys.
- Similarly to this, the keys of the nodes in the left subtree are less valuable than those of their parent nodes.

**Applications of Binary Trees**

- The Huffman coding tree, a type of binary tree, is used in data compression techniques.
- Compilers employ Expression Trees, a binary tree application.
- A priority queue is a different binary tree application that finds the maximum or minimum in O(log N) time complexity.
- Hierarchical data should be displayed.
- Used in Microsoft Excel and spreadsheet editing software.
- Several well-known computer compilers, like GCC and AOCL, use syntax trees to carry out arithmetic operations. They are useful for storing cache in the system and indexing segmentation in the database.
- for implementing priority queues.
- Binary search trees are used to achieve rapid memory allocation in computers by discovering items more quickly.
- procedures for encoding and decoding

**Binary Tree Advantages:**

- A binary tree’s searching process is incredibly quick.
- A binary tree can be represented straightforwardly and understandably.
- The process of moving from a parent node to a child node and vice versa is effective.
- easily implemented
- Easy to understand.
- A pyramidal organisation.
- the data set’s structural links should be reflected
- Compared to another data store, inserting data is simple.
- Data storage in memory management is simple.
- The user can quickly execute numerous nodes.
- an arbitrary number of data values can be stored.

**Binary Tree disadvantages:**

- Many pointers in binary tree traversals are null and therefore worthless.
- An array access operation takes less time than a Binary Search Tree (BST) access operation.
- Depending on the height of the tree, there are a few basic options.
- Node deletion is difficult.
- The height of the tree is one simple option.

Binary Tree Implementation