这段代码有什么问题?

wiw 2008-10-24 05:36:42
void CreateTree(TreeNode node, char data[], Index index) {
if (data[index.GetIndex()] == '#')
node = null;
else {
node = new TreeNode();
node.data = data[index.GetIndex()];
if (root == null)
root = node;
index.AddIndex();
CreateTree(node.lnode, data, index);
CreateTree(node.rnode, data, index);
}
}

这是一段递归建树的代码,就是把数组data转成树,在这里root的子树结果都为null,为什么?
...全文
131 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxsoft2007 2008-10-27
  • 打赏
  • 举报
回复
index.GetIndex(),这个取得是索引的当前位置??
index.AddIndex(),将当前索引登记??
如果是如上,那么在执行
CreateTree(node.lnode, data, index);
遍历 lnode时,data就将被遍历完,也就是rnode便利时将执行如下
if(data[index.GetIndex()] == '#')
node = null;
GetIndex()获得的都是最后一个数据值'#',也就是rnode获取的都是空值
「已注销」 2008-10-24
  • 打赏
  • 举报
回复
DOWN
raozhiyong11 2008-10-24
  • 打赏
  • 举报
回复
up
sdf
raozhiyong11 2008-10-24
  • 打赏
  • 举报
回复
丿
raozhiyong11 2008-10-24
  • 打赏
  • 举报
回复
up
SylvanLiu 2008-10-24
  • 打赏
  • 举报
回复
注意:你的node = new TreeNode()是在else{}中的
SylvanLiu 2008-10-24
  • 打赏
  • 举报
回复
注意:你的node = new TreeNode()是在else{}中的
SylvanLiu 2008-10-24
  • 打赏
  • 举报
回复
注意:你的node = new TreeNode()是在else{}中的
ZangXT 2008-10-24
  • 打赏
  • 举报
回复
贴个完整的代码看看。
wiw 2008-10-24
  • 打赏
  • 举报
回复
明白了,因为Java的地址传递也是个假的,它传递的是地址的拷贝。
luats 2008-10-24
  • 打赏
  • 举报
回复
没看懂!
killer_11 2008-10-24
  • 打赏
  • 举报
回复
友情UP
wiw 2008-10-24
  • 打赏
  • 举报
回复
确实为空,但是在递归的时候传递的Node地址,然后在new的时候赋值啊。为什么为空?
richard_2010 2008-10-24
  • 打赏
  • 举报
回复
同上问
xxsoft2007 2008-10-24
  • 打赏
  • 举报
回复
初步看了一下,好像楼主的树形中的rnode都为空,lnode有值??
pingzi_1119 2008-10-24
  • 打赏
  • 举报
回复
友情up
xqh2168 2008-10-24
  • 打赏
  • 举报
回复
up

62,614

社区成员

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

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