# Types of Binary Trees

Various data structures in computer science aid in the organization of data in various forms. Trees are popular abstract data structures that simulate a hierarchical tree structure. A tree typically has a root value and subtrees formed by child nodes from parent nodes. Non-linear data structures are trees.

The number of child nodes that a general tree data structure can hold is not limited. This, however, is not the case with a binary tree. This article will teach you about a specific tree data structure - binary trees - and the different types of binary trees.

## What exactly is the Binary Tree Data Structure?

There can be a maximum of two children for each parent in a binary tree, which is a non-linear data structure of the tree type.

Every node in a binary tree has a left and right reference in addition to the data element. The node at the top of a tree's hierarchy is known as the root node. The nodes that contain other sub-nodes are the parent nodes.

The left and right children are the two children of a parent node. Hashing, data compression, network traffic routing, setting up binary heaps, and building binary search trees are just a few of the uses for a binary tree.

## Terminologies related to Binary Trees and Binary Tree Types

1. Leaf Node: It represents the end of a branch in a tree.
2. Root Node: The root is the topmost node of a tree.
3. Parent Node: Each node (aside from the root) in a tree that has at least one sub-node is referred to as a parent.
4. The child node is a node that came directly from a parent node when moving away from the root.
5. These are the external nodes. They are the nodes that do not have any children.
6. Internal Node: As the name implies, these are nodes that have at least one child.
7. Tree's Depth: The number of edges connecting the tree's node to its root is.
8. Tree height is defined as the number of edges from the node to the deepest leaf. The root height is also considered by the tree height.

## Binary Tree Types:

• Full Binary Tree.
• Complete Binary Tree.
• Perfect Binary Tree.
• Balanced Binary Tree.
• Degenerate Binary Tree.

There are several types of binary trees, and each has its own set of characteristics. Each binary tree type is described in detail below:

1. Full Binary Tree

It is a specific type of binary tree with either zero or two children. It means that every node in that binary tree should have two child nodes, or the parent node should be the leaf node or the external node.

A full binary tree is a singular binary tree in which every node contains two children aside from the exterior node, to put it another way. A binary tree is not a full binary tree if it only has one child. In this instance, there are exactly as many leaf nodes as there are internal nodes, plus one. L=I+1, where I is the total number of nodes and L is the number of leaf nodes.

2. Complete Binary Tree

A type of binary tree known as a complete binary tree has all tree levels-all save the lowest-completely filled with nodes. Furthermore, every node in the bottom or final level of this binary tree should be on the left.

3. Perfect Binary Tree

When all of a binary tree's internal nodes have exactly two offspring and all of its leaf or exterior nodes are located at the same level or depth in the tree, the binary tree is said to be "perfect."

Two nodes make create a perfect binary tree of height 'h'.

4. Balanced Binary Tree

A binary tree is considered "balanced" if its height is O(logN), where N is the number of nodes. Each node's left and right subtrees should have height differences between them of no more than one in a balanced binary tree. Typical examples of data structures that can produce a balanced binary search tree include the AVL Tree and the Red-Black Tree.

5. Degenerate Binary Tree

A binary tree is said to as degenerate or pathological if each internal node has only one child. These trees are comparable to a linked list in terms of performance.

## Balanced Vs Unbalanced Binary Tree

Binary tree traversals frequently encounter pointers that are null and so useless. An array has a faster access operation than a Binary Search Tree (BST). The height of the tree determines a fundamental option.

Not an easy node to delete.

The height of the tree is a fundamental option.

### Time Complexity BST:

Average Worst
Space O(n) O(n)
Insert O(lg(n)) O(n)
Search O(lg(n)) O(n)
Delete O(lg(n)) O(n)

## Binary Tree Traversal:

The linear data structure, such as linked list, queue, and stack, only has one method to be traversed. While there are numerous ways to move through a tree, some of which are given below:

• Preorder traversal
• Inorder traversal
• Postorder traversal

Therefore, we will talk about the tree traversal methods stated above in this post. Let's get to the topic of tree traversal now.

### Preorder order

This method follows to the "root left, right" principle. It indicates that the left subtree is initially traversed recursively, followed by the visit to the root node, and then the right subtree. Preorder traversal is the process of traversing the root node before (or prior to) the left and right subtrees.

Therefore, each node is visited before both of them in a preorder traversal.

Preorder traversal has a variety of uses, including:

1. It is used to duplicate the tree.
2. It can also be used to obtain an expression tree's prefix expression.

This method adheres to the "left-right root" principle. This indicates that the root node's first left subtree is explored, followed by a recursive traversal of the right subtree, and then the root node itself. It is referred to as postorder traversal because the root node is explored after (or post) the left and right subtrees.

Each node is therefore visited after both of its subtrees in a postorder traverse.

Among the uses for postorder traversal are:

1. The tree gets deleted using it.
2. It can also be utilized to obtain an expression's postfix expression of a tree.

### Inorder traversal

This method follows to the "left root right" principle. It indicates that the root node is traversed first, followed by the first left subtree, and then the right subtree. It is known as inorder traversal because the root node is travelled between the left and right subtrees.

Each node is therefore visited between each of its subtrees throughout the inorder traversal.

Among the uses for inorder traversal are:

1. The BST nodes are obtained in ascending order using it.
2. It can also be used to obtain an expression tree's prefix expression.

## Application of Binary Trees:

• Binary trees are applied in data compression algorithms in the form of the Huffman coding tree.
• Expression Trees, a binary tree application, are used in compilers.
• Another binary tree application that searches maximum or minimum in O(log N) time complexity is priority queue.
• Display data that is hierarchical.
• utilized in spreadsheet and Microsoft Excel editing applications.
• Syntax trees are used by many well-known computer compilers, including GCC and AOCL, to perform arithmetic operations. They are useful for indexing segmentation at the database and storing cache in the system.
• for putting priority queues into action.
• utilized to provide quick memory allocation in computers (binary search tree) by finding elements more quickly.
• encoding and decoding operations.

## Applications of Binary Trees in Real Time:

• HTML's DOM.
• File manager.
• Spreadsheets and Microsoft Excel use the basic data structure.
• Spreadsheets and Microsoft Excel are the editor's tools.
• Analyze a phrase involving routing algorithms.

## Binary Tree's benefits include:

• A binary tree's searching process is incredibly quick.
• A binary tree can be represented in a straightforward and understandable way.
• It is effectively done to go from a parent node to its child node and vice versa.
• simple to understand and implement.
• A pyramidal organization.
• 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.
• arbitrary number of data values can be stored.

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

Next TopicB Tree Insertion

### Feedback   