我在構建二叉樹時遇到了一個相當混亂的問題。顯然這應該是一個簡單的任務,但不知何故,我可能會搞砸它的指針。二叉搜索樹不起作用
下面是簡化的代碼(當然這不是真正的代碼):
#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;」 –