我在构建二叉树时遇到了一个相当混乱的问题。显然这应该是一个简单的任务,但不知何故,我可能会搞砸它的指针。二叉搜索树不起作用
下面是简化的代码(当然这不是真正的代码):
#include <string.h>
#include <iostream>
using namespace std;
#define DIM1 2
typedef enum {LEFT,RIGHT} direction;
typedef char tName[MAX_NAME_LEN + 1];
struct Rectangle {
tName _name;
struct Rectangle *_binSon[DIM1];
};
struct Rectangle *recTree;
void insertRectToTree(char str[]){
struct Rectangle rect;
struct Rectangle *point;
struct Rectangle *parent;
strcpy(rect._name,str);
rect._binSon[RIGHT] = NULL;
rect._binSon[LEFT] = NULL;
point = ▭
if (recTree == NULL){
recTree = point;
} else {
struct Rectangle *current;
current = recTree;
while (current){
parent = current;
if (strcmp(point -> _name, current -> _name) > 0){
current = current -> _binSon[RIGHT];
} else {
current = current -> _binSon[LEFT];
}
}
if (strcmp(point -> _name, parent -> _name) < 0){
parent -> _binSon[LEFT] = point;
} else {
parent -> _binSon[RIGHT] = point;
}
}
}
int main(){
recTree = NULL;
char str[] = "LIKE";
insertRectToTree(str);
char str2[] = "GUIDE";
insertRectToTree(str2);
printf(recTree -> _name);
return 0;
}
正如你所看到的,这个二叉树尝试基于它的名字来组织的记录,所以最小的字母顺序将去到左侧等等。
问题是,在第一次插入“LIKE”之后,我想把“GUIDE”插入到树中,并且仍然以“LIKE”作为根。但是,printf()显示“GUIDE”作为其根。 (换句话说,“GUIDE”是输出)。对此有什么好的解释?问我是否需要为这个问题添加更多的东西。感谢您所有的帮助。
是语言C++或C? –
这是C++,但我敢打赌,它适用于C以及因为我不使用任何类 – vandershraaf
为什么你把关键字结构放在这一行“struct Rectangle * current;” –