This is a java program to construct a binary tree and perform postorder traversal of the constructed binary tree.
Nodes visited are in the order:
visit Left node
visit Right node
visit Root node
Here is the source code of the Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to implement non recursive post order traversal of Binary Search Tree
import java.util.Scanner;
import java.util.Stack;
class BinarySearchTreeNode
{
BinarySearchTreeNode left, right;
int data;
public BinarySearchTreeNode()
{
left = null;
right = null;
data = 0;
}
public BinarySearchTreeNode(int n)
{
left = null;
right = null;
data = n;
}
public void setLeft(BinarySearchTreeNode n)
{
left = n;
}
public void setRight(BinarySearchTreeNode n)
{
right = n;
}
public BinarySearchTreeNode getLeft()
{
return left;
}
public BinarySearchTreeNode getRight()
{
return right;
}
public void setData(int d)
{
data = d;
}
public int getData()
{
return data;
}
}
class BinarySearchTreeOperations
{
private BinarySearchTreeNodes root;
public BinarySearchTreeOperations()
{
root = null;
}
public boolean isEmpty()
{
return root == null;
}
public void insert(int data)
{
root = insert(root, data);
}
private BinarySearchTreeNodes insert(BinarySearchTreeNodes node, int data)
{
if (node == null)
node = new BinarySearchTreeNodes(data);
else
{
if (data <= node.getData())
node.left = insert(node.left, data);
else
node.right = insert(node.right, data);
}
return node;
}
public void postorder()
{
postorder(root);
}
private void postorder(BinarySearchTreeNodes r)
{
if (root == null)
return;
final Stack<BinarySearchTreeNodes> stack = new Stack<BinarySearchTreeNodes>();
BinarySearchTreeNodes node = root;
while (!stack.isEmpty() || node != null)
{
while (node != null)
{
if (node.right != null)
stack.add(node.right);
stack.add(node);
node = node.left;
}
node = stack.pop();
if (node.right != null && !stack.isEmpty()
&& node.right == stack.peek())
{
BinarySearchTreeNodes nodeRight = stack.pop();
stack.push(node);
node = nodeRight;
} else
{
System.out.print(node.data + " ");
node = null;
}
}
}
}
public class Postorder_NonRecursive_BST
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
BinarySearchTreeOperations bst = new BinarySearchTreeOperations();
System.out.println("Enter the first 10 elements of the tree\n");
int N = 10;
for (int i = 0; i < N; i++)
bst.insert(scan.nextInt());
System.out.print("\nPost order : ");
bst.postorder();
scan.close();
}
}
Output:
$ javac Postorder_NonRecursive_BST.java $ java Postorder_NonRecursive_BST Enter the first 10 elements of the tree 12 4 10 13 15 46 78 98 45 12 Post order : 12 10 4 45 98 78 46 15 13 12
Related posts:
Apache Tiles Integration with Spring MVC
Java Copy Constructor
Guide to ThreadLocalRandom in Java
Spring Boot Change Context Path
How to Break from Java Stream forEach
Jackson – Unmarshall to Collection/Array
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Find the Longest Path in a DAG
HashSet trong Java hoạt động như thế nào?
Retrieve User Information in Spring Security
Filtering and Transforming Collections in Guava
Java Program to Implement Singly Linked List
Converting a List to String in Java
A Guide to Java HashMap
Introduction to Spring Method Security
Java – Rename or Move a File
Quick Guide to @RestClientTest in Spring Boot
Spring Security Registration – Resend Verification Email
A Guide to Queries in Spring Data MongoDB
Xử lý ngoại lệ trong Java (Exception Handling)
Java Program to Create a Random Linear Extension for a DAG
Java Program to Implement Rope
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Java Program to Implement Quick Sort with Given Complexity Constraint
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Hướng dẫn sử dụng luồng vào ra ký tự trong Java
Stack Memory and Heap Space in Java
Introduction to Apache Commons Text
Using JWT with Spring Security OAuth
Jackson Exceptions – Problems and Solutions
Java Program to Implement Aho-Corasick Algorithm for String Matching