/**
* 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);
}
}
直观地打印二叉树
最新推荐文章于 2023-04-05 10:09:48 发布