fork download
  1. import java.util.Random;
  2.  
  3. class Node
  4. {
  5. Node left;
  6. Node right;
  7.  
  8. int data;
  9.  
  10. public Node(int data)
  11. {
  12. this.data = data;
  13. }
  14. }
  15.  
  16. class BinarySearchTree
  17. {
  18. Node root;
  19. char prefixChar;
  20. public BinarySearchTree(char preChar)
  21. {
  22. prefixChar = preChar;
  23. }
  24.  
  25. public void addNode(int val)
  26. {
  27. Node nNode = new Node(val);
  28.  
  29. if(root == null) root = nNode;
  30. else
  31. {
  32. Node tNode = root;
  33. while(tNode != null)
  34. {
  35. if(tNode.data > val)
  36. {
  37. if(tNode.left == null)
  38. {
  39. tNode.left = nNode;
  40. break;
  41. }
  42. tNode = tNode.left;
  43. }
  44. else
  45. {
  46. if(tNode.right == null)
  47. {
  48. tNode.right = nNode;
  49. break;
  50. }
  51. tNode = tNode.right;
  52. }
  53. }
  54. }
  55. }
  56.  
  57. public Node search(int val)
  58. {
  59. Node tNode = root;
  60. while(tNode != null)
  61. {
  62. if(val == tNode.data) return tNode;
  63. else
  64. {
  65. tNode = (val < tNode.data) ? tNode.left: tNode.right;
  66. }
  67. }
  68. return null;
  69. }
  70.  
  71. void printTree(Node node, String prefix)
  72. {
  73. if(node == null) return;
  74.  
  75. System.out.println(prefix + "+ " + node.data);
  76. printTree(node.left, prefix + prefixChar);
  77. printTree(node.right, prefix + prefixChar);
  78. }
  79. }
  80.  
  81. class Main {
  82.  
  83. public static void main(String[] args)
  84. {
  85. final int COUNT = 10;
  86. final int MAX = 100;
  87. Random random = new Random(MAX*MAX);
  88. BinarySearchTree bst = new BinarySearchTree(' ');
  89.  
  90. for(int i=0; i<COUNT; i++)
  91. {
  92. int num = random.nextInt(MAX);
  93. bst.addNode(num);
  94. System.out.println("Added : " + num);
  95. }
  96.  
  97. bst.printTree(bst.root, "");
  98.  
  99. }
  100.  
  101. }
Success #stdin #stdout 0.04s 711168KB
stdin
Standard input is empty
stdout
Added : 8
Added : 72
Added : 16
Added : 75
Added : 0
Added : 74
Added : 41
Added : 66
Added : 27
Added : 70
+ 8
 + 0
 + 72
  + 16
   + 41
    + 27
    + 66
     + 70
  + 75
   + 74