Inorder traversal allows all the nodes of the binary tree to be visited by applying a recursive algorithm.
This can be summed up as
- Traverse left subtree
- Visit root node (output this)
- Traverse right subtree
Recursive inorder binary tree traversal algorithm can use a generic node class.
Inorder Traversal Sequence: 4 - 2 - 5 - 1 - 3 - 6
package interviewquestions; class Node<T> { private T data; private Node<T> left; private Node<T> right; Node( T pData, Node<T> pLeft, Node<T> pRight ) { data = pData; left = pLeft; right = pRight; } public void setLeftChild( Node<T> pLeft ) { left = pLeft; } public void setRightChild( Node<T> pRight ) { right = pRight; } public Node<T> getLeftChild() { return left; } public Node<T> getRightChild() { return right; } public T getData() { return data; } } class BinaryTree<T> { Node<T> root; public BinaryTree(){ root = null; } public void setRootNode( Node<T> pRoot ) { root = pRoot; } public void inOrder() { inOrder( root ); } private void inOrder( Node<T> pNode ) { if( pNode == null ) return; inOrder( pNode.getLeftChild() ); System.out.println( pNode.getData() ); inOrder( pNode.getRightChild() ); } } public class InOrderTraversal { public static void main(String[] args) { Node<Integer> node1 = new Node<Integer>( 1, null, null ); Node<Integer> node2 = new Node<Integer>( 2, null, null ); Node<Integer> node3 = new Node<Integer>( 3, null, null ); Node<Integer> node4 = new Node<Integer>( 4, null, null ); Node<Integer> node5 = new Node<Integer>( 5, null, null ); Node<Integer> node6 = new Node<Integer>( 6, null, null ); node1.setLeftChild(node2); node1.setRightChild(node3); node2.setLeftChild(node4); node2.setRightChild(node5); node3.setRightChild(node6); BinaryTree<Integer> binaryTree = new BinaryTree<Integer>(); binaryTree.setRootNode(node1); binaryTree.inOrder(); } }
Create a InOrderTraversal.java file in your workspace.
When the main method inside the InOrderTraversal class executed it is going to print :
4
2
5
1
3
6
No comments:
Post a Comment