Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Скомпилируйте и введите java TreeSort
- class Tree {
- public Tree left; // левое и правое поддеревья и ключ
- public Tree right;
- public int key;
- public Tree(int k) { // конструктор с инициализацией ключа
- key = k;
- }
- /* insert (добавление нового поддерева (ключа))
- сравнить ключ добавляемого поддерева (К) с ключом корневого узла (X).
- Если K>=X, рекурсивно добавить новое дерево в правое поддерево.
- Если K<X, рекурсивно добавить новое дерево в левое поддерево.
- Если поддерева нет, то вставить на это место новое дерево
- */
- public void insert( Tree aTree) {
- if ( aTree.key < key )
- if ( left != null ) left.insert( aTree );
- else left = aTree;
- else
- if ( right != null ) right.insert( aTree );
- else right = aTree;
- }
- /* traverse (обход)
- Рекурсивно обойти левое поддерево.
- Применить функцию f (печать) к корневому узлу.
- Рекурсивно обойти правое поддерево.
- */
- public void traverse(TreeVisitor visitor) {
- if ( left != null)
- left.traverse( visitor );
- visitor.visit(this);
- if ( right != null )
- right.traverse( visitor );
- }
- }
- interface TreeVisitor {
- public void visit(Tree node);
- };
- class KeyPrinter implements TreeVisitor {
- public void visit(Tree node) {
- System.out.println( " " + node.key );
- }
- };
- class TreeSort {
- public static void main(String args[]) {
- Tree myTree;
- myTree = new Tree( 7 ); // создать дерево (с ключом)
- myTree.insert( new Tree( 5 ) ); // присоединять поддеревья
- myTree.insert( new Tree( 9 ) );
- myTree.traverse(new KeyPrinter());
- }
- }
- public void Pre(TreeVisitor visitor) {
- visitor.visit(this);
- if ( left != null)
- left.Pre( visitor );
- if ( right != null )
- right.Pre( visitor );
- }
- public void In(TreeVisitor visitor) {
- if ( left != null)
- left.In( visitor );
- visitor.visit(this);
- if ( right != null )
- right.In( visitor );
- }
- public void Post(TreeVisitor visitor) {
- if ( left != null)
- left.Post( visitor );
- if ( right != null )
- right.Post( visitor );
- visitor.visit(this);
- }
Add Comment
Please, Sign In to add comment