我为我的程序构建了一个二叉搜索树。这是我的代码:
struct node {
int steps;
int x;
int y;
struct node *left;
struct node *right;
}*head;
typedef struct node *Node;
Node createStepsBinaryTree(Node head, int newStepsInt, int x, int y){
if (head == NULL) {
head = (Node)malloc(sizeof(Node));
if (head==NULL) {
return NULL;
}else{
head->steps = newStepsInt;
head->x = x;
head->y = y;
head->left = head->right = NULL;
}
}else{
if (head->steps > newStepsInt) {
head->left = createStepsBinaryTree(head->left, newStepsInt, x, y);
}else{
head->right = createStepsBinaryTree(head->right, newStepsInt, x, y);
}
}
return head;
}
这就是我从另一个递归函数调用这个函数的方式:
Coor insertDataToTree(Node stepsTree,Coor root, int x, int y, int map[length][length], int steps){
steps++;
stepsTree = createStepsBinaryTree(stepsTree, steps, x, y);
.
.
.
这就是我将它输入到该递归函数的方式:
Node stepsTree = NULL;
root = insertDataToTree(stepsTree,root, startPoint.x, startPoint.y, map, startPoint.steps);
现在对于我遇到的主要问题:它在前两次运行时运行良好,但随后它第三次通过该树中的两个结构运行,但是当它应该给自己一个 NULL 结构时,它给出了一些东西真的很接近 NULL。它显示(节点 *)0x0000000000000000000001。
有谁知道我怎样才能阻止这种疯狂?:)