[英]Print a Binary Tree (level by level) Java
我正在嘗試制作一個class 逐級打印我的二叉樹。
我的代碼類中有(1)在我的二叉樹上插入元素,(2)按順序打印,(3)按后序打印,(4)按預序打印。 我需要再創建一個 class 以樹狀結構(或金字塔狀)打印我的二叉樹 我想創建一個 class 來打印我的二叉樹的元素,如下所示:
謝謝!
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;
}
}
如果要逐級打印,最好使用隊列
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);
}
}
}
注意:將 null 添加到隊列中是指下一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.