001    
002    package brs;
003    
004    /**
005     * Computes a String representation of the binary tree host so that it can be
006     * printed vertically, given a leftmost leading string for the two subtrees.
007     * Called by ToString.
008     * Should be implemented as an anonymous inner class in the call by ToString.
009     * @author Dung X. Nguyen - Copyright 2001 - All rights reserved.
010     * @author Mathias Ricken - Copyright 2008 - All rights reserved.
011     */
012    public class ToStringHelp<T> implements IVisitor<T,String,String> {
013        /**
014        * Returns "|_[]" to denote an empty tree subtree.
015        * @param host an empty binary (sub)tree.
016        * @param nu not used.
017        * @return String
018        */
019        public String emptyCase(BiTree<T> host, String... nu) {
020            return "|_ []";
021        }
022    
023        /**
024        * Computes a String representation of the binary tree host so that it
025        * can be printed vertically.
026        * There is no '\n' at the end of the String.
027        * @param host a non-empty binary (sub)tree.
028        * @param leftLead appropriate leftmost leading String to help compute the
029        * String representations of the left and right subtrees.
030        * @return String
031        */
032        public String nonEmptyCase(BiTree<T> host, String... leftLead) {
033            String ls = host.getLeftSubTree().execute(this, leftLead[0] + "|  ");
034            String rs = host.getRightSubTree().execute(this, leftLead[0] + "   ");
035            return ("|_ " + host.getRootDat()+ "\n" +
036                    leftLead[0] + ls + "\n" +
037                    leftLead[0] + rs);
038        }
039    }