[英]how to print level order traversal of binary tree including null values? java
嘿伙計們,我正在嘗試打印二叉樹的級別順序遍歷,但我無法打印 null 值(在下面的代碼中顯示為連字符“-”)。 你能幫我解決這個問題嗎? 到目前為止,這是我的代碼:
static void printIt(Node root) {
int h = findHeight(root);
int i;
for (i = 1; i <= h; i++)
writeLevelOrder(root, i);
}
static int findHeight(Node node) {
if (node == null) {
return 0;
}
return 1 + Math.max(findHeight(node.right), findHeight(node.left));
}
static void writeLevelOrder(Node root, int level) {
if (root==null) {
System.out.print("- ");
return;
}
if (level==1){
System.out.print(root.val + " ");
}
else if (level > 1) {
if (root.left == null) {
System.out.print("- ");
}
if (root.right == null) {
System.out.print("- ");
}
writeLevelOrder(root.left, level - 1);
writeLevelOrder(root.right, level - 1);
}
}
這不是一個有效的解決方案,但它可以完成工作。我只是用 28282828 填充 null 值並在打印時檢查它,這是我的解決方案:
static void printIt(Node root, BufferedWriter writer) throws IOException {
int h = findHeight(root);
int i;
for (i = 1; i <= h; i++)
writeLevelOrder(root, i, writer);
}
static int findHeight(Node node) {
if (node == null) {
return 0;
}
return 1 + Math.max(findHeight(node.right), findHeight(node.left));
}
static void writeLevelOrder(Node root, int level, BufferedWriter writer) throws IOException {
if (root == null && level == 1) {
System.out.print("- ");
writer.write("- ");
return;
}
if (root == null && level != 1) {
Node r = new Node(28282828);
root = r;
root.left = r;
root.right = r;
System.out.print("- ");
writer.write("- ");
}
if (root.val == 28282828 && level != 1) {
System.out.print("- ");
writer.write("- ");
}
if (level == 1 && root.val != 28282828) {
System.out.print(root.val + " ");
writer.write(root.val + " ");
} else if (level > 1) {
writeLevelOrder(root.left, level - 1, writer);
writeLevelOrder(root.right, level - 1, writer);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.