Binary Tree can have at most 2 child. To know about Tree please click on Tree Introduction.
We can traversal binary tree using below 2 technique.
1) Recursive Way,
2) Iterative Way.
Pre-Order: is also known as DLR. First we have to traversal the root node then followed by left sub tree and then followed by right sub tree.Keep continue until tree has been traversed.
Lets take above tree dig, Where root is 1 and left child 2 and right is 3. First we traversal 1 then we have left sub tree. In left sub tree 2 becomes root and 5 becomes left sub tree of 2 . We have to keep traversal until each and every nodes of the tree has been traversed once.
O/P: 1,2,5,9,6,3,4,8,7,10
Sample BinaryTree Class:
public class BinaryDataTree<E> {
private E data;
private BinaryDataTree<E> left;
private BinaryDataTree<E> right;
public BinaryDataTree() {
}
public BinaryDataTree(E data) {
this.data=data;
}
public E getData() {
return data;
}
public void setData(E data) {
this.data = data;
}
public BinaryDataTree<E> getLeft() {
return left;
}
public void setLeft(BinaryDataTree<E> left) {
this.left = left;
}
public BinaryDataTree<E> getRight() {
return right;
}
public void setRight(BinaryDataTree<E> right) {
this.right = right;
}
}
Recursive Way:
public void preOrderRecusriveWay(BinaryDataTree<Integer> root) {
if (root == null) {
return;
}
System.out.print(root.getData() + " ");
preOrderIterativeWay(root.getLeft());
preOrderIterativeWay(root.getRight());
}
Iterative Way:
public void preOrderIterativeWay(BinaryDataTree<Integer> root) {
Stack<BinaryDataTree<Integer>> s = new Stack<BinaryDataTree<Integer>>();
if (root == null) {
System.out.println("No Element In the Tree");
return;
}
while (true) {
while (root != null) {
System.out.print(root.getData() + " ");
s.push(root);
root = root.getLeft();
}
if (s.isEmpty()) {
break;
}
root = s.pop().getRight();
}
}
We can traversal binary tree using below 2 technique.
- DFS(Depth First Search): Depth-first traversal (Arkiletian traversal) is easily implemented via a stack
- Pre-Order
- Post Order
- In Order
- BFS (Breath First Search) is also known as level order in Tree. breadth-first traversal is easily implemented via a queue
1) Recursive Way,
2) Iterative Way.
Pre-Order: is also known as DLR. First we have to traversal the root node then followed by left sub tree and then followed by right sub tree.Keep continue until tree has been traversed.
Lets take above tree dig, Where root is 1 and left child 2 and right is 3. First we traversal 1 then we have left sub tree. In left sub tree 2 becomes root and 5 becomes left sub tree of 2 . We have to keep traversal until each and every nodes of the tree has been traversed once.
O/P: 1,2,5,9,6,3,4,8,7,10
Sample BinaryTree Class:
public class BinaryDataTree<E> {
private E data;
private BinaryDataTree<E> left;
private BinaryDataTree<E> right;
public BinaryDataTree() {
}
public BinaryDataTree(E data) {
this.data=data;
}
public E getData() {
return data;
}
public void setData(E data) {
this.data = data;
}
public BinaryDataTree<E> getLeft() {
return left;
}
public void setLeft(BinaryDataTree<E> left) {
this.left = left;
}
public BinaryDataTree<E> getRight() {
return right;
}
public void setRight(BinaryDataTree<E> right) {
this.right = right;
}
}
Recursive Way:
public void preOrderRecusriveWay(BinaryDataTree<Integer> root) {
if (root == null) {
return;
}
System.out.print(root.getData() + " ");
preOrderIterativeWay(root.getLeft());
preOrderIterativeWay(root.getRight());
}
Iterative Way:
public void preOrderIterativeWay(BinaryDataTree<Integer> root) {
Stack<BinaryDataTree<Integer>> s = new Stack<BinaryDataTree<Integer>>();
if (root == null) {
System.out.println("No Element In the Tree");
return;
}
while (true) {
while (root != null) {
System.out.print(root.getData() + " ");
s.push(root);
root = root.getLeft();
}
if (s.isEmpty()) {
break;
}
root = s.pop().getRight();
}
}
No comments:
Post a Comment