Talking about representation, trees can be represented in two way:
1) Dynamic Node Representation (Linked Representation).
2) Array Representation (Sequential Representation).
We are going to talk about sequential representation of the trees.
To represent tree using array, numbering of nodes can start either from 0–(n-1) or 1–n .
A(0)
/ \
B(1) C(2)
/ \ \
D(3) E(4) F(5)
OR,
A(1)
/ \
B(2) C(3)
/ \ \
D(4) E(5) F(6)
For first case(0—n-1),
if (say)father=p;
then left_son=(2*p)+1;
and right_son=(2*p)+2;
For second case(1—n),
if (say)father=p;
then left_son=(2*p);
and right_son=(2*p)+1;
where father,left_son and right_son are the values of indices of the array.
Code –
// JAVA implementation of tree using array // numbering starting from 0 to n-1. import java.util.*; import java.lang.*; import java.io.*; class Tree { public static void main(String[] args) { Array_imp obj = new Array_imp(); obj.Root("A"); // obj.set_Left("B", 0); obj.set_Right("C", 0); obj.set_Left("D", 1); obj.set_Right("E", 1); obj.set_Left("F", 2); obj.print_Tree(); } } class Array_imp { static int root = 0; static String[] str = new String[10]; /*create root*/ public void Root(String key) { str[0] = key; } /*create left son of root*/ public void set_Left(String key, int root) { int t = (root * 2) + 1; if(str[root] == null){ System.out.printf("Can't set child at %d, no parent found\n",t); }else{ str[t] = key; } } /*create right son of root*/ public void set_Right(String key, int root) { int t = (root * 2) + 2; if(str[root] == null){ System.out.printf("Can't set child at %d, no parent found\n",t); }else{ str[t] = key; } } public void print_Tree() { for (int i = 0; i < 10; i++) { if (str[i] != null) System.out.print(str[i]); else System.out.print("-"); } } } |
Output:
Can't set child at 3, no parent found Can't set child at 4, no parent found A-C--F----
Note – Please refer this if you want to construct tree from the given parent array.
Recommended Posts:
- Implementation of Binary Search Tree in Javascript
- Complexity of different operations in Binary tree, Binary Search Tree and AVL tree
- Minimum swap required to convert binary tree to binary search tree
- Construct Binary Tree from given Parent Array representation
- Check whether a binary tree is a full binary tree or not | Iterative Approach
- Shortest path between two nodes in array like representation of binary tree
- Check if an array represents Inorder of Binary Search tree or not
- Find Height of Binary Tree represented by Parent array
- Check if a given array can represent Preorder Traversal of Binary Search Tree
- Construct a complete binary tree from given array in level order fashion
- Convert a Binary Tree to Threaded binary tree | Set 2 (Efficient)
- Convert a Binary Tree to Threaded binary tree | Set 1 (Using Queue)
- Check if the given array can represent Level Order Traversal of Binary Search Tree
- BK-Tree | Introduction & Implementation
- Decision tree implementation using Python
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : Sachin Jain 1



