Treex.java

Allikas: Lambda

public class Treex {
    
  public static void main(String[] arg) {
    System.out.println("treex starts");
    
    // create a tree
    // [10,[20,30],40]

    InnerNode ts;
    InnerNode tn1;
    InnerNode tn2;  
    InnerNode tn3;  
    IntNode td;
      
    // first three top-level elems
      
    tn1 = new InnerNode();
    ts=tn1;
      
    td = new IntNode();
    td.data=10;  
    tn1.left=td;
    tn1.right=null;    

    tn2 = new InnerNode();   
    tn1.right=tn2;
  
    tn3 = new InnerNode();   
    tn2.right=tn3; 
    td = new IntNode();
    td.data=40;  
    tn3.left=td;
    
    // now two second-level elements
    
    tn1 = new InnerNode();
    td = new IntNode();
    td.data=20;  
    tn1.left=td;
    
    tn2.left=tn1;
    
    tn2 = new InnerNode();
    td = new IntNode();
    td.data=30;  
    tn2.left=td;
    
    tn1.right=tn2;
    
    printNodes(ts);      
  }
  
  static void printNodes( TreeNode root ) {      
    if ( root == null ) {      
    } else if (root instanceof IntNode) {
      System.out.print((IntNode)root.data);      
    } else if (root instanceof InnerNode)   {                       
      System.out.print("[");        
      printNodes(((InnerNode)root).left);  
      if (((InnerNode)root).right!=null) {  
        System.out.print(",");  
        printNodesRight(((InnerNode)root).right);           
      }    
      System.out.print("]");
    }    
  } 
  
  static void printNodesRight( TreeNode root ) {      
    if ( root == null ) {      
    } else if (root instanceof IntNode) {
      printNodes(root);      
    } else if (root instanceof InnerNode)   {                       
      printNodes(((InnerNode)root).left);  
      if (((InnerNode)root).right!=null) {  
        System.out.print(",");  
        printNodesRight(((InnerNode)root).right);           
      }    
    }    
  } 
  

}


abstract class TreeNode {};

class InnerNode extends TreeNode {   
     TreeNode left; 
     TreeNode right;
}

class IntNode extends TreeNode {   
     int data;
}