我正在尝试制作一个类,逐级打印我的二叉树。
我的代码类中有 (1) 在我的二叉树中插入元素,(2) 按顺序打印,(3) 按后顺序打印,(4) 按预顺序打印.我需要再创建一个类,以树状结构(或金字塔状)打印我的二叉树 我想创建一个类来打印我的二叉树的元素,如下所示:
谢谢!
public class MyBinaryTree {
static class Node{
char data;
Node left;
Node right;
Node(char data){
left = right = null;
this.data = data;
}
}
Node root;
MyBinaryTree(){
root = null;
}
public void insertElements() {
Scanner scan = new Scanner(System.in);
String inputStr = new String();
System.out.print("Input elements:");
inputStr = scan.nextLine();
for(int i = 0; i < inputStr.length(); i++) {
Insert(inputStr.charAt(i));
}
}
public void Insert (char data) {
root = Insert(root, data);
numOfNodes++;
}
Node Insert (Node node, char data) {
if (node == null) {
node = new Node(data);
} else {
if (data <= node.data) {
node.left = Insert(node.left, data);
} else {
node.right = Insert(node.right, data);
}
}
return node;
}
}
答案 0 :(得分:3)
如果您想逐级打印,最好使用队列
void printLevelOrder() {
Queue<Node> queue = new LinkedList<Node>();
queue.add(root);
queue.add(null);
while (!queue.isEmpty()) {
Node temp = queue.poll();
if(temp!=null)
System.out.print(temp.data + " ");
if(temp == null) {
System.out.println();
if(queue.isEmpty()) break;
queue.add(null);
continue;
}
/*Enqueue left child */
if (temp.left != null) {
queue.add(temp.left);
}
/*Enqueue right child */
if (temp.right != null) {
queue.add(temp.right);
}
}
}
注意:向队列添加空值是在下一行提到的。