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:
Java Streams vs Vavr Streams
Mệnh đề if-else trong java
A Guide to Spring Cloud Netflix – Hystrix
Java Program to Describe the Representation of Graph using Incidence List
Guide to Mustache with Spring Boot
Java Program to Implement LinkedBlockingQueue API
Custom Exception trong Java
Java Collections Interview Questions
How to Get a Name of a Method Being Executed?
Từ khóa static và final trong java
Java – Create a File
Spring Boot - Creating Docker Image
How to Remove the Last Character of a String?
Java Program to Implement DelayQueue API
Java CyclicBarrier vs CountDownLatch
Spring Boot - Flyway Database
Retrieve User Information in Spring Security
Java Program to Implement Segment Tree
Java Program to Permute All Letters of an Input String
Java Program to Implement Shoelace Algorithm
Guide to PriorityBlockingQueue in Java
Java Program to Implement Circular Singly Linked List
Guide to the Volatile Keyword in Java
wait() and notify() Methods in Java
RegEx for matching Date Pattern in Java
The “final” Keyword in Java
Testing an OAuth Secured API with Spring MVC
Serialize Only Fields that meet a Custom Criteria with Jackson
Apache Commons Collections OrderedMap
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Program to Implement ConcurrentLinkedQueue API
Tính trừu tượng (Abstraction) trong Java