package DataStructures.Trees;import java.util.LinkedList;/** @author Varun Upadhyay (https://github.com/varunu28) */// Driver Programpublic class TreeTraversal {public static void main(String[] args) {Node tree = new Node(5);tree.insert(3);tree.insert(2);tree.insert(7);tree.insert(4);tree.insert(6);tree.insert(8);// Prints 5 3 2 4 7 6 8System.out.println("Pre order traversal:");tree.printPreOrder();System.out.println();// Prints 2 3 4 5 6 7 8System.out.println("In order traversal:");tree.printInOrder();System.out.println();// Prints 2 4 3 6 8 7 5System.out.println("Post order traversal:");tree.printPostOrder();System.out.println();// Prints 5 3 7 2 4 6 8System.out.println("Level order traversal:");tree.printLevelOrder();System.out.println();}}/*** The Node class which initializes a Node of a tree Consists of all 4 traversal methods:* printInOrder, printPostOrder, printPreOrder & printLevelOrder printInOrder: LEFT -> ROOT -> RIGHT* printPreOrder: ROOT -> LEFT -> RIGHT printPostOrder: LEFT -> RIGHT -> ROOT printLevelOrder:* Prints by level (starting at root), from left to right.*/class Node {Node left, right;int data;public Node(int data) {this.data = data;}public void insert(int value) {if (value < data) {if (left == null) {left = new Node(value);} else {left.insert(value);}} else {if (right == null) {right = new Node(value);} else {right.insert(value);}}}public void printInOrder() {if (left != null) {left.printInOrder();}System.out.print(data + " ");if (right != null) {right.printInOrder();}}public void printPreOrder() {System.out.print(data + " ");if (left != null) {left.printPreOrder();}if (right != null) {right.printPreOrder();}}public void printPostOrder() {if (left != null) {left.printPostOrder();}if (right != null) {right.printPostOrder();}System.out.print(data + " ");}/** O(n) time algorithm. Uses O(n) space to store nodes in a queue to aid in traversal. */public void printLevelOrder() {LinkedList<Node> queue = new LinkedList<>();queue.add(this);while (queue.size() > 0) {Node head = queue.remove();System.out.print(head.data + " ");// Add children of recently-printed node to queue, if they exist.if (head.left != null) {queue.add(head.left);}if (head.right != null) {queue.add(head.right);}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。