二叉树的建立

米兰的小铁匠z 2019-01-29 07:24:08
我采用的是递归方式。。不料二叉树没有连接起来,想问原因,这样子C语言可以写成功。。
int index = 0;
void CreateBiTree(BiTree T, String str) {
char ch;
if (index < str.length()) {
ch = str.charAt(index);
index++;
} else {
return;
}
if (ch == '#') {
T = null;
} else {
T = new BiTree();
T.data = ch;
CreateBiTree(T.lchild, str);
CreateBiTree(T.rchild, str);
}

下面是类的成员变量和初始化函数

char data;
BiTree lchild, rchild;

/**
* 初始化
*/
void Init(BiTree T) {
T = null; // 初始化
}
主函数

public class Test {

public static void main(String[] args) {

BiTree T = new BiTree();
T.Init(T);
T.CreateBiTree(T, "ABDH#K###E##CFI###G#J##");
System.out.println("");
}
}


若有回复,感激不尽。
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-01-30
  • 打赏
  • 举报
回复
CreateBiTree(T.lchild, str);
CreateBiTree(T.rchild, str);

你这里上一句递归了,下一句不可能执行了
nayi_224 2019-01-30
  • 打赏
  • 举报
回复
BiTree的泛型T加的毫无意义,而且这么多的T你应该没全弄清楚分别代表什么意思。 比如T = new BiTree();会覆盖传入的参数T,会导致你没有对main方法里的T做任何操作。
qq_39936465 2019-01-30
  • 打赏
  • 举报
回复
引用 2 楼 天天挨踢tona 的回复:
嗯嗯 我感觉时那个new的问题 和C的指针有所区别。
但是不清楚要怎么改比较好?


需要鉴别左右分支,一层递归里要index+2 ,用递归可能是先花树的一遍然后回溯一点点画完,递归里要把index传递下去 。index就是下面的数字

1
2 3
4 5 6 7

而你现在的递归是

1
2
3
4
  • 打赏
  • 举报
回复
嗯嗯 我感觉时那个new的问题 和C的指针有所区别。 但是不清楚要怎么改比较好?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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