编译了一个晚上还是没通过的java程序

qsszs123 2006-06-26 05:04:09
原题:已知以二叉链表做为存储结构,编写按层次顺序遍历二叉树的算法。

我的思路是:采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列,如此直到队列空为止。

编译了一个晚上还是通不过.555555
哪位大哥帮忙看下,谢谢了

import java.io.*;
public class tree01
{ public static void main (String args[])throws IOException
{ int i;
int Index=1;
int Data;
int Vaule;
QueueArray Queue=new QueueArray();
BNTreeArray BNTree=new BNTreeArray();
System.out.println("please input the element of binary tree(Exil for 0):");
BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Data"+Index+":");
Data=Integer.parseInt(console.readLine());
BNTree.TreeData[0]=Data;
Index++;
while(true)
{

System.out.print("Data"+Index+":");
Data=Integer.parseInt(console.readLine());
if(Data==0)
break;
BNTree.Create(Data);
Index++;
}
System.out.print("The Leverorder Traversal result is[");
BNTree.Lateorder(0);
System.out.println("]");
}
}
class QueueArray
{int MaxSize=10;
int[]AQueue=new int[MaxSize];
int Front=-1;
int Rear=-1;
/*------将结点放入队列中------*/
public void AddQueue(int Value)
{ int i;
if (Rear>=MaxSize)
System.out.println("The Queue is full!");
else{
Rear++;
AQueue[Rear]=Value;}
}
/*------取出头结点------*/
public void DelQueue(int Value)
{int Temp;
if(Front==Rear)
{System.out.println("The stack is empty!!");
Value=-1;
}
Front++;
Temp=AQueue[Front];
Value=Temp;}
}
class BNTreeArray
{public static int MaxSize=16;
public static int[]TreeData=new int[MaxSize];
public static int[]RightNode=new int[MaxSize];
public static int[]LeftNode=new int[MaxSize];
public BNTreeArray()
{
int i; //循环计数变量
for(i=0;i<MaxSize;i++)
{TreeData[i]=0;
RightNode[i]=-1;
LeftNode[i]=-1;
}
}
/*------建立二叉树------*/
public void Create(int Data)
{int i;
int Level=0; //循环计数变量
int Position=0; //树的阶层树
for(i=0;TreeData[i]!=0;i++);
TreeData[i]=Data;
while(true)
{if (Data>TreeData[Level])
{
if (RightNode[Level]!=-1)
Level=RightNode[Level];
else
{Position=-1;
break;}
}
else {
if (LeftNode[Level]!=-1)
Level=LeftNode[Level];
else{
Position=1;
break;}
}
}
if (Position==1)
LeftNode[Level]=i;
else
RightNode[Level]=i;
}
/*----------------层次遍历二叉树---------*/
public static void Leverorder(int Pointer)
{ if(Pointer!=-1)
Queue.AddQueue(Pointer);
while(Front!=Rear) //队列非空
{Queue.DelQueue(Front); //删除队首元素
System.out.print(" "+TreeData[Front]+" ");}
if(LeftDate[Front]!=-1) //队首元素左子树非空
{Queue.AddQueue(LeftDate[Front]) ;} //左子树根结点存入队列
if(RightDate[Front]!=-1) //队首元素右子树非空
{Queue.AddQueue(RightDate[Front]) ;} //右子树根结点存入队列
}
}
...全文
136 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧