package com.atguigu;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static StringBuilder sb = new StringBuilder();
public void printTree(Node head) {
sb.append("Binary Tree:");
printInOrder(head,0,"H",17);
sb.append("\n");
}
public 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);
sb.append(getSpace(height * len) + val + "\n\n");
printInOrder(head.left,height + 1,"^",len);
}
public String getSpace(int num) {
String space = " ";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < num; i++) {
sb.append(space);
}
return sb.toString();
}
public static void main(String args[]) {
Main main = new Main();
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
scanner.nextLine();
String[] line;
String[][] numbers = new String[m][3];
for (int i = 0; i < m; i++) {
line = scanner.nextLine().split(" ");
numbers[i][0] = line[0];
numbers[i][1] = line[1];
numbers[i][2] = line[2];
}
HashMap<Integer,Node> map = new HashMap<>();
map.put(0,null);
int value;
for (int i = 0; i < m; i++) {
value = Integer.parseInt(numbers[i][0]);
if (value != 0) {
map.put(value,new Node(value));
}
}
Node cur;
for (int i = 0; i < m; i++) {
value = Integer.parseInt(numbers[i][0]);
cur = map.get(value);
cur.left = map.get(Integer.parseInt(numbers[i][1]));
cur.right = map.get(Integer.parseInt(numbers[i][2]));
}
cur = map.get(n);
main.printTree(cur);
System.out.println(sb.toString());
}
}
class Node {
public int value;
public Node left;
public Node right;
public Node (int data) {
this.value = data;
}
}
输入格式:
7 1
1 2 3
2 4 0
3 5 6
4 0 7
5 0 0
6 0 0
7 0 0
09-27
02-05
208
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交