package com.mjy.printer;
/**
             ┌──800
         ┌──760
         │   └──600
     ┌──540
     │   └──476
     │       └──445
 ┌──410
 │   └──394
381
 │     ┌──190
 │     │   └──146
 │  ┌──40
 │  │  └──35
 └──12
    └──9
 
 * @author MJ Lee
 *
 */
public class InorderPrinter extends Printer {
	private static String rightAppend;
	private static String leftAppend;
	private static String blankAppend;
	private static String lineAppend;
	static {
		int length = 2;
		rightAppend = "┌" + Strings.repeat("─", length);
		leftAppend = "└" + Strings.repeat("─", length);
		blankAppend = Strings.blank(length + 1);
		lineAppend = "│" + Strings.blank(length);
	}
	public InorderPrinter(BinaryTreeInfo tree) {
		super(tree);
	}
	@Override
	public String printString() {
		StringBuilder string = new StringBuilder(
				printString(tree.root(), "", "", ""));
		string.deleteCharAt(string.length() - 1);
		return string.toString();
	}
	
	/**
	 * 生成node节点的字符串
	 * @param nodePrefix node那一行的前缀字符串
	 * @param leftPrefix node整棵左子树的前缀字符串
	 * @param rightPrefix node整棵右子树的前缀字符串
	 * @return
	 */
	private String printString(
			Object node, 
			String nodePrefix,
			String leftPrefix, 
			String rightPrefix) {
		Object left = tree.left(node);
		Object right = tree.right(node);
		String string = tree.string(node).toString();
		
		int length = string.length();
		if (length % 2 == 0) {
			length--;
		}
		length >>= 1;
		
		String nodeString = "";
		if (right != null) {
			rightPrefix += Strings.blank(length);
			nodeString += printString(right, 
					rightPrefix + rightAppend, 
					rightPrefix + lineAppend, 
					rightPrefix + blankAppend);
		}
		nodeString += nodePrefix + string + "\n";
		if (left != null) {
			leftPrefix += Strings.blank(length);
			nodeString += printString(left, 
					leftPrefix + leftAppend, 
					leftPrefix + blankAppend, 
					leftPrefix + lineAppend);
		}
		return nodeString;
	}
}
 最近下载更多
最近下载更多
                
                Cathcode     LV1
                2022年5月2日
            
            
        
                wang512237140     LV20
                2021年12月16日
            
            
        
                matintalorr     LV10
                2021年8月31日
            
            
        
                xkfkb2341     LV1
                2020年11月28日
            
            
        
                xwq1234567     LV1
                2020年10月27日
            
            
        
                Cc1996     LV1
                2020年10月26日
            
            
        
                huangwu1026     LV1
                2020年7月29日
            
            
        
                2650343087     LV6
                2020年5月26日
            
            
        
                唐力刚     LV1
                2020年5月13日
            
            
        
                kyq123     LV1
                2020年4月10日
            
            
         最近浏览更多
最近浏览更多
                
                ttg2025     LV3
                7月14日
            
            
        
                wuziayng1232     LV11
                2023年6月1日
            
            
        
                我爱你野狼123    
                2023年3月22日
            
            
                    暂无贡献等级
            
        
                666ing     LV2
                2023年2月26日
            
            
        
                heqian     LV17
                2023年1月10日
            
            
        
                微信网友_6248713511227392     LV11
                2022年12月5日
            
            
        
                vitos5n     LV10
                2022年9月6日
            
            
        
                crosa_Don     LV18
                2022年7月6日
            
            
        
                wang512237140     LV20
                2021年12月16日
            
            
        
                Luo qian98vu     LV1
                2021年11月10日
            
            
        
 
     
                 
    