我完成了我的任务,只是希望输出看起来不错,所以我需要一个打印方法,它可以打印二叉树的树结构(由数组表示)。
在树的数组表示中:
if node:i
儿童:2 * i,2 * i + 1
家长:i / 2
例如,对于数组
value 10 5 8 2 3 6 7
index 1 2 3 4 5 6 7
树表示应该是:
10 5 8 2 3 6 7
它不必与上面显示的完全相同的表示。它可以是正确显示树的任何表示。
有人可以帮助我吗? 谢谢
答案 0 :(得分:1)
应该很容易。对于第一行,打印1.第二行,打印数组元素2,3。第三行,打印数组元素4,5,6,7。第四排,8,9,10,11,12,13,14,15。看模式?每行,您打印元素2 ^ n到2 ^(n + 1) - 1,其中顶行为零。
这假设如果某些节点没有两个子节点,那些空子节点仍然在数组中使用空格。
答案 1 :(得分:0)
这是任何人的代码。 (*好久没用Java写了)
public class PrintTree{
static int PowerOf2(int power)
{
return (1<<power);
}
static void PrintTreeArray(int array[], int arrayLength)
{
int currentLevel = 0;
int maxPerLevel = PowerOf2(currentLevel);
for(int i = 0; i < arrayLength; i++)
{
if(i == maxPerLevel-1)
{
System.out.println("\n");
currentLevel++;
maxPerLevel = PowerOf2(currentLevel);
}
System.out.print(" "+array[i]);
}
}
public static void main(String []args)
{
int[] array = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
PrintTreeArray(array,15);
}
}