понедельник, 11 декабря 2017 г.

Trees (Java)




import java.util.ArrayList;

public class TreeNode<T> {

    private TreeNode<T> Parent;
    private ArrayList<TreeNode<T>> Children;
    private T Data;

    public TreeNode(T data) {
        this.Data = data;
        this.Children = new ArrayList<TreeNode<T>>();
    }

    public void AddChild(TreeNode<T> child) {
        Children.add(child);
        child.Parent = this;
    }

    public String SubTreeToString() {
        String tree = this.Data.toString();
        if (this.Children.size() > 0) {
            tree += "(";
            for (int i = 0; i < this.Children.size(); i++) {
                tree += this.Children.get(i).SubTreeToString();
                if (i < this.Children.size() - 1) {
                    tree += ", ";
                }
            }
            tree += ")";
        }
        return tree;
    }

    public void DataSet(T data) {
        Data = data;
    }

    public T DataGet() {
        return Data;
    }

    public void ChildrenSet(ArrayList<TreeNode<T>> children) {
        Children = children;
    }

    public ArrayList<TreeNode<T>> ChildrenGet() {
        return Children;
    }

    public void ParentSet(TreeNode<T> parent) {
        Parent = parent;
    }

    public TreeNode<T> ParentGet() {
        return Parent;
    }
}

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {

        TreeNode<String> root = new TreeNode<String>("Root");
        TreeNode<String> node1 = new TreeNode<String>("L1");
        TreeNode<String> node2 = new TreeNode<String>("L2");
        TreeNode<String> node3 = new TreeNode<String>("L3");
        TreeNode<String> leaf1_1 = new TreeNode<String>("L11");
        TreeNode<String> leaf1_2 = new TreeNode<String>("L12");
        TreeNode<String> leaf1_3 = new TreeNode<String>("L13");
        TreeNode<String> leaf2_1 = new TreeNode<String>("L21");
        TreeNode<String> leaf2_2 = new TreeNode<String>("L22");

        root.AddChild(node1);
        root.AddChild(node2);
        root.AddChild(node3);

        node1.AddChild(leaf1_1);
        node1.AddChild(leaf1_2);
        node1.AddChild(leaf1_3);

        node2.AddChild(leaf2_1);
        node2.AddChild(leaf2_2);

        String tree = root.SubTreeToString();

        System.out.println("Tree:");
        System.out.println(tree);

    }
}

Tree:
Root(L1(L11, L12, L13), L2(L21, L22), L3)

Комментариев нет:

Отправить комментарий