二叉树节点数组表示法,搞不明白怎么有死循环

sky3168095 2007-01-10 05:14:48
public class TreeTest1//二叉树节点数组表示法
{
int[] tree;//存放节点的数据内容
int[] right;//存放右子节点在数组中的下标
int[] left;//存放左子节点在数组中的下标
TreeTest1(int[] b)//构造函数初始化
{
tree=new int[b.length];
right=new int[b.length];
left=new int[b.length];
for(int i=0;i<b.length;i++)
{
tree[i]=0;
right[i]=-1;
left[i]=-1;
}
}
public static void main(String[] args)
{
int[] a={6,4,9,2,5,7,12,1,8};
TreeTest1 tt=new TreeTest1(a);
tt.creatTree(a);//以数组a创建数
tt.printTree(a);//打印结果树

}
public void creatTree(int[] aa)//创建二叉树节点数组表示法
{
int i=0;
int index=0;
int position=0;
for(int j=0;j<aa.length;j++)
{
for(i=0;tree[i]!=0;i++);
tree[i]=aa[j];
while(true)
{
if(aa[j]>tree[index])//右子树
{
if(right[index]!=-1)//如果右子树有下一阶层
{
index=right[index];
}
else//如果右子树没有下一阶层
{
position=-1;
break;
}
}
else//左子树
{
if(left[index]!=-1)//如果左子树有下一阶层
{
index=left[index];
}
else//如果左子树没有有下一阶层
{
position=1;
break;
}
}
}
if(position==1)
{
left[index]=i;
}
else
{
right[index]=i;
}
}
}//创建树结束
public void printTree(int[] bb)//打印树
{
int i;
System.out.println("The Binary Tree Node Date:");
System.out.println(" [Left] [Date] [Right] ");
for(i=0;i<bb.length;i++)
{
System.out.print("Node"+(i+1));
System.out.print(" ["+left[i]+"] ");
System.out.print("["+tree[i]+"] ");
System.out.println("["+right[i]+"]");
}
}
}
...全文
344 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky3168095 2007-01-11
  • 打赏
  • 举报
回复
高手出现啊,祈祷

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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