Guest User

Untitled

a guest
Feb 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. // Скомпилируйте и введите java TreeSort
  2. class Tree {
  3. public Tree left; // левое и правое поддеревья и ключ
  4. public Tree right;
  5. public int key;
  6.  
  7. public Tree(int k) { // конструктор с инициализацией ключа
  8. key = k;
  9. }
  10.  
  11. /* insert (добавление нового поддерева (ключа))
  12. сравнить ключ добавляемого поддерева (К) с ключом корневого узла (X).
  13. Если K>=X, рекурсивно добавить новое дерево в правое поддерево.
  14. Если K<X, рекурсивно добавить новое дерево в левое поддерево.
  15. Если поддерева нет, то вставить на это место новое дерево
  16. */
  17. public void insert( Tree aTree) {
  18. if ( aTree.key < key )
  19. if ( left != null ) left.insert( aTree );
  20. else left = aTree;
  21. else
  22. if ( right != null ) right.insert( aTree );
  23. else right = aTree;
  24. }
  25.  
  26. /* traverse (обход)
  27. Рекурсивно обойти левое поддерево.
  28. Применить функцию f (печать) к корневому узлу.
  29. Рекурсивно обойти правое поддерево.
  30. */
  31. public void traverse(TreeVisitor visitor) {
  32. if ( left != null)
  33. left.traverse( visitor );
  34.  
  35. visitor.visit(this);
  36.  
  37. if ( right != null )
  38. right.traverse( visitor );
  39. }
  40. }
  41.  
  42. interface TreeVisitor {
  43. public void visit(Tree node);
  44. };
  45.  
  46. class KeyPrinter implements TreeVisitor {
  47. public void visit(Tree node) {
  48. System.out.println( " " + node.key );
  49. }
  50. };
  51.  
  52. class TreeSort {
  53. public static void main(String args[]) {
  54. Tree myTree;
  55. myTree = new Tree( 7 ); // создать дерево (с ключом)
  56. myTree.insert( new Tree( 5 ) ); // присоединять поддеревья
  57. myTree.insert( new Tree( 9 ) );
  58. myTree.traverse(new KeyPrinter());
  59. }
  60. }
  61.  
  62. public void Pre(TreeVisitor visitor) {
  63. visitor.visit(this);
  64. if ( left != null)
  65. left.Pre( visitor );
  66. if ( right != null )
  67. right.Pre( visitor );
  68. }
  69. public void In(TreeVisitor visitor) {
  70. if ( left != null)
  71. left.In( visitor );
  72. visitor.visit(this);
  73. if ( right != null )
  74. right.In( visitor );
  75. }
  76. public void Post(TreeVisitor visitor) {
  77. if ( left != null)
  78. left.Post( visitor );
  79. if ( right != null )
  80. right.Post( visitor );
  81. visitor.visit(this);
  82. }
Add Comment
Please, Sign In to add comment