### 1. Full (Proper) Binary Tree#

``````# Each nodes has either 2 or 0 children.

12

8               18

5       11
``````

### 2. Degenerate (Pathological) Binary Tree#

``````# Each internal node has either a right or a left child.
# Each node is a left node or each node is a right node.

1       1
2               2
3                       3
``````

### 4. Complete Binary Tree#

``````# Each level is filled from left to right.
8

5               3

4       6       7
``````

### 5. Perfect Binary Tree#

``````# Each internal node has 2 children and each leaf node is on the same level.
0               8

1       5               3

2   4       6       7       8
N = 2^(h+1) - 1 | height of root = 0
``````

### 6. Balanced Binary Tree#

``````# For each node, the difference in height between
# the left and right subtrees is 1 or less.
0

1               2

3       4
``````

### 7. Binary Search Tree (BST)#

``````# Each node in the left subtree is less than the parent.
# Each node in the right subtree is greater than the parent.
# This rule applies to every node in the tree.

8

4               15

3       5       12      20
``````

### TreeNode Definition#

``````# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
``````

GeeksForGeeks: Types of Binary Trees