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;
}