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