直观地打印二叉树

来源:互联网 发布:鹰眼行车记录仪软件 编辑:程序博客网 时间:2024/06/06 04:20
/** * Created by lxw, liwei4939@126.com on 2017/10/26. */public class PrintBinaryTree {    public static class Node{        public int value;        public Node left;        public Node right;        public Node(int data){            this.value = data;        }    }    public static void printTree(Node head){        System.out.println("Binary Tree:");        printInOrder(head, 0, "H", 17);        System.out.println();    }    public static void printInOrder(Node head, int height, String to, int len){        if(head == null)            return;        printInOrder(head.right, height+1,"v", len);        String val = to + head.value + to;        int lenM = val.length();        int lenL = (len - lenM)/2;        int lenR = len-lenM - lenL;        val = getSpace(lenL) + val + getSpace(lenR);        System.out.println(getSpace(height*len) + val);        printInOrder(head.left, height+1, "^",len);    }    public static String getSpace(int num){        String space = " ";        StringBuffer buf = new StringBuffer("");        for(int i=0; i<num; i++){            buf.append(space);        }        return buf.toString();    }    public static void main(String[] args){        Node[] NArr = new Node[7];        for(int i=0; i<NArr.length; i++){            NArr[i] = new Node(i+1);        }        Node head = NArr[0];        head.left = NArr[1];        head.right = NArr[2];        NArr[1].left = NArr[3];        NArr[2].left = NArr[4];        NArr[2].right = NArr[5];        NArr[3].right = NArr[6];        printTree(head);    }}

原创粉丝点击