C++ 二叉搜索树不';行不通

C++ 二叉搜索树不';行不通,c++,binary-tree,C++,Binary Tree,在构建二叉树时,我遇到了一个相当令人困惑的问题。显然,这应该是一项简单的任务,但不知何故,我可能会弄乱其中的指针 下面是简化的代码(当然不是真正的代码): #包括 #包括 使用名称空间std; #定义DIM1 2 typedef枚举{左,右}方向; typedef char tName[最大名称+长度+1]; 结构矩形{ t名称(名称);; 结构矩形*_binSon[DIM1]; }; 结构矩形*矩形树; void insertRectToTree(char str[]){ 结构矩形矩形; 结构

在构建二叉树时,我遇到了一个相当令人困惑的问题。显然,这应该是一项简单的任务,但不知何故,我可能会弄乱其中的指针

下面是简化的代码(当然不是真正的代码):

#包括
#包括
使用名称空间std;
#定义DIM1 2
typedef枚举{左,右}方向;
typedef char tName[最大名称+长度+1];
结构矩形{
t名称(名称);;
结构矩形*_binSon[DIM1];
};
结构矩形*矩形树;
void insertRectToTree(char str[]){
结构矩形矩形;
结构矩形*点;
结构矩形*父对象;
strcpy(矩形名称,str);
rect._binSon[右]=空;
rect._binSon[左]=空;
点=▭
if(recTree==NULL){
矩形树=点;
}否则{
结构矩形*当前;
当前=矩形树;
while(当前){
父项=当前;
if(strcmp(点->\u名称,当前->\u名称)>0){
电流=电流->宾森[右];
}否则{
电流=电流->宾森[左];
}
}
if(strcmp(点->\u名称,父项->\u名称)<0){
父项->\u binSon[左]=点;
}否则{
父项->\u binSon[右]=点;
}
}
}
int main(){
recTree=NULL;
char str[]=“LIKE”;
插入树(str);
char str2[]=“指南”;
插入树(str2);
printf(recTree->\u名称);
返回0;
}
如您所见,此二叉树尝试根据其名称组织记录,因此最小的字母顺序将转到左侧,依此类推


问题是,在第一次插入“LIKE”之后,我希望将“GUIDE”也插入到树中,而“LIKE”仍然是根。但是,printf()显示“GUIDE”作为它的根。(换句话说,“指南”是输出)。对此有什么好的解释吗?问我是否需要在这个问题上补充一些东西。谢谢你的帮助

在以下行内

struct Rectangle rect;
...
point = &rect;
...
recTree = point;

将对局部变量的引用指定给全局指针。离开函数后,它可能不再包含有效数据。

Howard是正确的。但要纠正问题,请使用新的

i、 e.代替
point=&rect


point=新结构矩形 

这是C++,但我敢肯定,它也适用于C,因为我不使用任何类,为什么你把关键字结构放到这个结构“矩形矩形流”中,是的,我想我需要去掉这些结构。但它仍然不能解决问题,这是真的。你有什么解决办法吗?我有点喜欢指南针honestly@vandershraaf使用
point=newstruct矩形和更高版本的
点->\u binSon[右]=NULL
并完全摆脱
rect
。我没有使用[new struct Rectangle],而是使用[new Rectangle]。顺便说一句,谢谢你的回复。这是最好的答案,因为我在尝试之前不知道真正的问题,但它有错误。还有其他解决方法吗?我已经尝试过了,但是[point=new Rectangle]效果更好。尽管如此,我还是放弃投票支持你的见解
struct Rectangle rect;
...
point = &rect;
...
recTree = point;