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);
}
}
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