Tree1




import Node1;

public class Tree1 {
  private int data;
  private Tree1 left,right;
  private boolean empty;

  public Tree1() {
    empty=true;
  }

  public Tree1(int d) {
    empty=false;
    data=d;
    left=new Tree1();
    right=new Tree1();
  }

  public Tree1(int d, Tree1 l, Tree1 r) {
    empty=false;
    data=d;
    left=l;
    right=r;
  }

  public boolean isEmpty() {
    return empty;
  }

  public int info() {
    return data;
  }

  public Tree1 left() {
    return left;
  }

  public Tree1 right() {
    return right;
  }
  
  public int abs(int in) {
    if (in < 0) return -in;
    else return in;
  }

  public int number() {
    if (isEmpty()) return 0;
    else return 1 + left().number() + right.number();
  }

  public void printPre() {
    if (isEmpty())
      return;
    System.out.println(info());
    left().printPre();
    right().printPre();
  }

  public void printIn() {
    if (isEmpty())
      return;
    left().printIn();
    System.out.println(info());
    right().printIn();
  }

  public void printPost() {
    if (isEmpty())
      return;
    left().printPost();
    right().printPost();
    System.out.println(info());
  }

  public boolean isPerfectBal(){
    if (isEmpty()) return true;
    if (((abs(left().number() - right().number())) <= 1) &&
	left().isPerfectBal() && right().isPerfectBal()) return true;
    else return false;
  }

  public int maxDepth() {
    int x1=0;
    int x2=0;
    if (left().isEmpty() && right().isEmpty()) return 1;
    if (!right().isEmpty()){
       x1=1 + right().maxDepth();
    }
    if (!left().isEmpty()){
       x2=1 + left().maxDepth();
    }
    if (x1>=x2){
       return x1;
    }
    return x2;
  }

  public Node1 pre() {
    if (isEmpty())
      return new Node1();
    return left().pre().concat(info()).addTwo(right().pre());
  }


  public static void main(String[] arg) {
    Tree1 t0=new Tree1();
    Tree1 t1=new Tree1(1);
    Tree1 t2=new Tree1(2);
    Tree1 t3=new Tree1(3,t0,t1);
    Tree1 t4=new Tree1(4,t2,t3);
    System.out.print("Preorder insättning i lista ger: ");
        Node1 n= t4.pre();
     n.print();
    System.out.println();

    //System.out.println("Sum"+t4.sum());
    System.out.println("Number ger: "+t4.number());
    System.out.println("isPerfBal ger: "+t4.isPerfectBal());
    System.out.println("Preorder utskrift av trädet: ");
    t4.printPre();
    System.out.println("Inorder utskrift av trädet: ");
    t4.printIn();
    System.out.println("Postorder utskrift av trädet: ");
    t4.printPost();
    System.out.println("Maximala djupet är: "+t4.maxDepth());

  }
}








Tillbaks till huvudsidan

email: Alireza.Niai_nouri.2077@student.uu.se