## Tree Data StructureWe read the linear data structures like an array, linked list, stack and queue in which all the elements are arranged in a sequential manner. The different data structures are used for different kinds of data.
**What type of data needs to be stored**?: It might be a possibility that a certain data structure can be the best fit for some kind of data.**Cost of operations:**If we want to minimize the cost for the operations for the most frequently performed operations. For example, we have a simple list on which we have to perform the search operation; then, we can create an array in which elements are stored in sorted order to perform the. The binary search works very fast for the simple list as it divides the search space into half.*binary search***Memory usage:**Sometimes, we want a data structure that utilizes less memory.
The above tree shows the CEO of the company, and John has two direct reports named as and Steve. Steve has three direct reports named Rohan where Lee, Bob, Ella is a manager. Bob has two direct reports named Steve and Sal. EmmaEmma has two direct reports named and Tom. Tom has one direct report named Raj. This particular logical structure is known as a Bill. Its structure is similar to the real tree, so it is named a Tree. In this structure, the Tree is at the top, and its branches are moving in a downward direction. Therefore, we can say that the Tree data structure is an efficient way of storing the data in a hierarchical way.root
- A tree data structure is defined as a collection of objects or entities known as nodes that are linked together to represent or simulate hierarchy.
- A tree data structure is a non-linear data structure because it does not store in a sequential manner. It is a hierarchical structure as elements in a Tree are arranged in multiple levels.
- In the Tree data structure, the topmost node is known as a root node. Each node contains some data, and data can be of any type. In the above tree structure, the node contains the name of the employee, so the type of data would be a string.
- Each node contains some data and the link or reference of other nodes that can be called children.
Let's consider the tree structure, which is shown below: In the above structure, each node is labeled with some number. Each arrow shown in the above figure is known as a **Root:**The root node is the topmost node in the tree hierarchy. In other words, the root node is the one that doesn't have any parent. In the above structure, node numbered 1 is**the root node of the tree.**If a node is directly linked to some other node, it would be called a parent-child relationship.**Child node:**If the node is a descendant of any node, then the node is known as a child node.**Parent:**If the node contains any sub-node, then that node is said to be the parent of that sub-node.**Sibling:**The nodes that have the same parent are known as siblings.**Leaf Node:-**The node of the tree, which doesn't have any child node, is called a leaf node. A leaf node is the bottom-most node of the tree. There can be any number of leaf nodes present in a general tree. Leaf nodes can also be called external nodes.**Internal nodes:**A node has atleast one child node known as an*internal***Ancestor node:-**An ancestor of a node is any predecessor node on a path from the root to that node. The root node doesn't have any ancestors. In the tree shown in the above image, nodes 1, 2, and 5 are the ancestors of node 10.**Descendant:**The immediate successor of the given node is known as a descendant of a node. In the above figure, 10 is the descendant of node 5.
## Properties of Tree data structure**Recursive data structure:**The tree is also known as a. A tree can be defined as recursively because the distinguished node in a tree data structure is known as a*recursive data structure*. The root node of the tree contains a link to all the roots of its subtrees. The left subtree is shown in the yellow color in the below figure, and the right subtree is shown in the red color. The left subtree can be further split into subtrees shown in three different colors. Recursion means reducing something in a self-similar manner. So, this recursive property of the tree data structure is implemented in various applications.*root node***Number of edges:**If there are n nodes, then there would n-1 edges. Each arrow in the structure represents the link or path. Each node, except the root node, will have atleast one incoming link known as an edge. There would be one link for the parent-child relationship.**Depth of node x:**The depth of node x can be defined as the length of the path from the root to the node x. One edge contributes one-unit length in the path. So, the depth of node x can also be defined as the number of edges between the root node and the node x. The root node has 0 depth.**Height of node x:**The height of node x can be defined as the longest path from the node x to the leaf node.
Based on the properties of the Tree data structure, trees are classified into various categories. ## Implementation of TreeThe tree data structure can be created by creating the nodes dynamically with the help of the pointers. The tree in the memory can be represented as shown below: The above figure shows the representation of the tree data structure in the memory. In the above structure, the node contains three fields. The second field stores the data; the first field stores the address of the left child, and the third field stores the address of the right child. In programming, the structure of a node can be defined as: The above structure can only be defined for the binary trees because the binary tree can have utmost two children, and generic trees can have more than two children. The structure of the node for generic trees would be different as compared to the binary tree. ## Applications of treesThe following are the applications of trees: **Storing naturally hierarchical data:**Trees are used to store the data in the hierarchical structure. For example, the file system. The file system stored on the disc drive, the file and folder are in the form of the naturally hierarchical data and stored in the form of trees.**Organize data:**It is used to organize data for efficient insertion, deletion and searching. For example, a binary tree has a logN time for searching an element.**Trie:**It is a special kind of tree that is used to store the dictionary. It is a fast and efficient way for dynamic spell checking.**Heap:**It is also a tree data structure implemented using arrays. It is used to implement priority queues.**B-Tree and B+Tree:**B-Tree and B+Tree are the tree data structures used to implement indexing in databases.**Routing table:**The tree data structure is also used to store the data in routing tables in the routers.
## Types of Tree data structure
**General tree:**The general tree is one of the types of tree data structure. In the general tree, a node can have either 0 or maximum n number of nodes. There is no restriction imposed on the degree of the node (the number of nodes that a node can contain). The topmost node in a general tree is known as a root node. The children of the parent node are known as.*subtrees* There can benumber of subtrees in a general tree. In the general tree, the subtrees are unordered as the nodes in the subtree cannot be ordered.*n* Every non-empty tree has a downward edge, and these edges are connected to the nodes known as. The root node is labeled with level 0. The nodes that have the same parent are known as*child nodes*.*siblings***Binary tree:**Here, binary name itself suggests two numbers, i.e., 0 and 1. In a binary tree, each node in a tree can have utmost two child nodes. Here, utmost means whether the node has 0 nodes, 1 node or 2 nodes.**To know more about the binary tree, click on the link given below:** https://www.javatpoint.com/binary-tree**Binary Search tree:**Binary search tree is a non-linear data structure in which one node is connected tonumber of nodes. It is a node-based data structure. A node can be represented in a binary search tree with three fields, i.e., data part, left-child, and right-child. A node can be connected to the utmost two child nodes in a binary search tree, so the node contains two pointers (left child and right child pointer).*n* Every node in the left subtree must contain a value less than the value of the root node, and the value of each node in the right subtree must be bigger than the value of the root node.
A node can be created with the help of a user-defined data type known as The above is the node structure with three fields: data field, the second field is the left pointer of the node type, and the third field is the right pointer of the node type.
https://www.javatpoint.com/binary-search-tree It is one of the types of the binary tree, or we can say that it is a variant of the binary search tree. AVL tree satisfies the property of the . It is a self-balancing binary search tree that was invented by binary search tree. Here, self-balancing means that balancing the heights of left subtree and right subtree. This balancing is measured in terms of the Adelson Velsky Lindas.balancing factorWe can consider a tree as an AVL tree if the tree obeys the binary search tree as well as a balancing factor. The balancing factor can be defined as the
https://www.javatpoint.com/avl-tree
When any operation is performed on the tree, we want our tree to be balanced so that all the operations like searching, insertion, deletion, etc., take less time, and all these operations will have the time complexity of
why do we require a Red-Black tree. In the AVL tree, we do not know how many rotations would be required to balance the tree, but in the Red-black tree, a maximum of 2 rotations are required to balance the tree. It contains one extra bit that represents either the red or black color of a node to ensure the balancing of the tree.**Splay tree**
The splay tree data structure is also binary search tree in which recently accessed element is placed at the root position of tree by performing some rotation operations. Here, binary search tree having no explicit balance condition like self-balancingAVL tree.It might be a possibility that height of the splay tree is not balanced, i.e., height of both left and right subtrees may differ, but the operations in splay tree takes order of Splay tree is a balanced tree but it cannot be considered as a height balanced tree because after each operation, rotation is performed which leads to a balanced tree. **Treap**
Treap data structure came from the Tree and Heap data structure. So, it comprises the properties of both Tree and Heap data structures. In Binary search tree, each node on the left subtree must be equal or less than the value of the root node and each node on the right subtree must be equal or greater than the value of the root node. In heap data structure, both right and left subtrees contain larger keys than the root; therefore, we can say that the root node contains the lowest value. In treap data structure, each node has both where key is derived from the Binary search tree and priority is derived from the heap data structure.priorityThe - Right child of a node>=current node and left child of a node <=current node (binary tree)
- Children of any subtree must be greater than the node (heap)
B-tree is a balanced
- Each node in a b-tree can have maximum
**m**children - For minimum children, a leaf node has 0 children, root node has minimum 2 children and internal node has minimum ceiling of m/2 children. For example, the value of m is 5 which means that a node can have 5 children and internal nodes can contain maximum 3 children.
- Each node has maximum (m-1) keys.
The root node must contain minimum 1 key and all other nodes must contain atleast Next TopicBinary Tree |