Postorder 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
- Traverse right subtree
- Visit root node (output this)
Recursive postorder binary tree traversal algorithm can use a generic node class.
Postorder Traversal Sequence: 4 - 5 - 2 - 6 - 3 - 1
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 postOrder() { postOrder( root ); } private void postOrder( Node<T> pNode ) { if( pNode == null ) return; postOrder( pNode.getLeftChild() ); postOrder( pNode.getRightChild() ); System.out.println( pNode.getData() ); } } public class PostOrderTraversal { 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.postOrder(); } }
Create a PostOrderTraversal.java file in your workspace.
When the main method inside the PostOrderTraversal class executed it is going to print :
4
5
2
6
3
1
No comments:
Post a Comment