/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/java-new/2020-12-23/BinTreeEncapsulatedProg.java


public class BinTreeEncapsulatedProg {
    public static void main (String [] args) {
        try {
            BinTree root = new BinTree (args [0]);
            int i;
            
            for (i = 1;  i < args.length;  i++)
                root.insertBinTree (args[i]);
            root.traverseBinTree ();
        }
        catch (ArrayIndexOutOfBoundsException e) {
            System.out.println ("usage: java BinTreeProg arg1 ...");
        }
    }
    public static class BinTree {
        public static class BinTreeNode {
            BinTree l;
            BinTree r;
            String v;
            
            BinTreeNode (BinTree l, BinTree r, String v) {
                this.l = l;
                this.r = r;
                this.v = v;
            }
        }
        
        BinTreeNode nod = null;
        
        BinTree (String v) {
            this.nod = new BinTreeNode (null, null, v);
        }
        
        void insertBinTree (String v) {
            if (this.nod.v.compareTo (v) < 0) {
                if (this.nod.l == null)
                    this.nod.l = new BinTree (v);
                else 
                    this.nod.l.insertBinTree (v);
            }
            else {
                if (this.nod.r == null)
                    this.nod.r = new BinTree (v);
                else
                    this.nod.r.insertBinTree (v);
            }
        }
        
        void traverseBinTree () {
            if (this.nod.r != null)
                this.nod.r.traverseBinTree ();
            System.out.println (this.nod.v);
            if (this.nod.l != null)
                this.nod.l.traverseBinTree ();
        }
    }
}