|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
BST.h
#pragma once
#include <iostream>
using namespace std;
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
bool SearchBST(BiTree Tree, int key, BiTree LastNode, BiTree *PtrLastNode);
bool InsertBST(BiTree Tree, int key);
BST.cpp
#include "BST.h"
bool SearchBST(BiTree Tree, int key, BiTree LastNode, BiTree *PtrLastNode)
{
if (!Tree)
{
*PtrLastNode = LastNode;
return false;
}
else if(Tree->data == key)
{
*PtrLastNode = Tree;
return true;
}
else if (Tree->data < key)
{
return SearchBST(Tree->rchild, key, Tree, PtrLastNode);
}
else
{
return SearchBST(Tree->lchild, key, Tree, PtrLastNode);
}
}
bool InsertBST(BiTree Tree, int key)
{
BiTree PtrLastNode;
if (!SearchBST(Tree, key, nullptr, &PtrLastNode))
{
BiTree s = new BiTNode;
s->data = key;
s->lchild = s->rchild = nullptr;
if (!PtrLastNode)
{
Tree = s;
}
else if (PtrLastNode->data > key)
{
PtrLastNode->lchild = s;
}
else
{
PtrLastNode->rchild = s;
}
return true;
}
else
{
return false;
}
}
main.cpp
#include "BST.h"
int main()
{
int a[10] = { 5, 2, 1, 4, 7, 9, 0 ,8, 3, 6 };
BiTree Tree = nullptr;
for (int i = 0; i < 10; ++i)
{
InsertBST(Tree, a[i]);
}
}
运行后,每次虽然显示插入成功了,但是Tree始终为nullptr空指针。
我向InsertBST传入的已经是一个指针Tree了,为什么在InsertBST中将s赋值给Tree后仍然为空?
感谢! |
|