Monday, February 16, 2015

Post Order Binary Tree Traversal

Traversing a tree in Post order is a bit difficult.

class PostOrderTrav {
        static public void postOrderTrav(TreeNode root) {
                Stack stack = new Stack();

                if(root == null) {
                        System.err.println("TreeNode root is empty");
                        return;
                }

                do {
                        while(root != null) {
                                if(root.getRight() != null)
                                        stack.push(root.getRight());

                                stack.push(root);

                                root = root.getLeft();
                        }

                        root = stack.pop();

                        if(root.getRight() != null && root.getRight() == stack.peek()) {
                                stack.pop();
                                stack.push(root);
                                root = root.getRight();
                        } else {
                                System.out.println(root.getData());
                                root = null;
                        }


                } while(! stack.isEmpty());
        }

        static public void main(String[] args) {
                TreeNode root = TreeUtil.getTree();

                postOrderTrav(root);
        }
}

No comments:

Post a Comment