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,为什么?
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,为什么?
index.AddIndex(),将当前索引登记??
如果是如上,那么在执行
CreateTree(node.lnode, data, index);
遍历 lnode时,data就将被遍历完,也就是rnode便利时将执行如下
if(data[index.GetIndex()] == '#')
node = null;
GetIndex()获得的都是最后一个数据值'#',也就是rnode获取的都是空值