// Fig. 22.16: Tree.java package com.deitel.jhtp3.ch22; // Class TreeNode definition class TreeNode { // package access members TreeNode left; // left node int data; // data item TreeNode right; // right node // Constructor: initialize data to d and make this a leaf node public TreeNode( int d ) { data = d; left = right = null; // this node has no children } // Insert a TreeNode into a Tree that contains nodes. // Ignore duplicate values. public synchronized void insert( int d ) { if ( d < data ) { if ( left == null ) left = new TreeNode( d ); else left.insert( d ); } else if ( d > data ) { if ( right == null ) right = new TreeNode( d ); else right.insert( d ); } } } // Class Tree definition public class Tree { private TreeNode root; // Construct an empty Tree of integers public Tree() { root = null; } // Insert a new node in the binary search tree. // If the root node is null, create the root node here. // Otherwise, call the insert method of class TreeNode. public synchronized void insertNode( int d ) { if ( root == null ) root = new TreeNode( d ); else root.insert( d ); } // Preorder Traversal public synchronized void preorderTraversal() { preorderHelper( root ); } // Recursive method to perform preorder traversal private void preorderHelper( TreeNode node ) { if ( node == null ) return; System.out.print( node.data + " " ); preorderHelper( node.left ); preorderHelper( node.right ); } // Inorder Traversal public synchronized void inorderTraversal() { inorderHelper( root ); } // Recursive method to perform inorder traversal private void inorderHelper( TreeNode node ) { if ( node == null ) return; inorderHelper( node.left ); System.out.print( node.data + " " ); inorderHelper( node.right ); } // Postorder Traversal public synchronized void postorderTraversal() { postorderHelper( root ); } // Recursive method to perform postorder traversal private void postorderHelper( TreeNode node ) { if ( node == null ) return; postorderHelper( node.left ); postorderHelper( node.right ); System.out.print( node.data + " " ); } } /************************************************************************** * (C) Copyright 1999 by Deitel & Associates, Inc. and Prentice Hall. * * All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/