Binary Tree Data Structure.

Binary Tree use case.


In computer science and programming, a a tree is a nonlinear hierarchical data structure that consists of nodes connected by edges. And a tree whose elements have at most 2 children is called a binary tree. We typically name these 2 children the left and right child.

Binary Tree Data Structure.



A Binary Tree node contains the following 3 items:

- Data.
- Pointer to left child.
- Pointer to right child.

A full Binary tree is a type of binary tree in which every parent has either two or no children.
A perfect binary tree is a type of binary tree in which every internal node has exactly two children and all the leaf nodes are at the same level.
A complete binary tree is a binary tree in which every level (except possibly the last) is completely filled and all nodes in the last level are as far left as possible.
A degenerate or pathological tree is where each parent node has only one child node, which is similar to a linked list data structure.
A balanced binary tree is a binary tree in which the left and right subtrees of every node differ in height by no more than 1.



Binary Tree traversal Python code:



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

    def traverseInOrder(self):
        if self.left:
            self.left.traverseInOrder()
        print(self.val, end=' ')
        if self.right:
            self.right.traverseInOrder()        
       
    def traversePreOrder(self):
        print(self.val, end=' ')
        if self.left:
            self.left.traversePreOrder()
        if self.right:
            self.right.traversePreOrder()

    def traversePostOrder(self):
        if self.left:
            self.left.traversePostOrder()
        if self.right:
            self.right.traversePostOrder()
        print(self.val, end=' ')


root = Node(1)

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

print("In order Traversal: ")
root.traverseInOrder()

print("\nPre order Traversal: ")
root.traversePreOrder()

print("\nPost order Traversal: ")
root.traversePostOrder()

OUT:
In order Traversal:
4 2 5 1 3
Pre order Traversal:
1 2 4 5 3
Post order Traversal:
4 5 2 3 1





See also related topics: