qq_38059586 2017-06-03 17:54
浏览 2836

写入访问权限冲突 显示T是nullptr

显示T是nullptr 麻烦大神们帮我看看,十分感谢

#include "stdafx.h"
#include
#include
#include

typedef int Status;
typedef int ElemType;
typedef struct bnode{ ElemType data; //数据域
struct bnode *LC, *RC;//左右子树域
}bnode, *btree;
void printtree(btree T, int nlayer)
{
if (T==NULL)
return printtree(T->RC, nlayer + 1);
for (int i=0;i { printf(" "); }
printf("%d\n",T->data);
printtree (T->LC,nlayer+1);
}

int InsertBST(btree &T, int key)
{

if(T==NULL)

{

T=(btree)malloc(sizeof(bnode));

T->data=key;

T->LC=T->RC=NULL;

return 1; }

else if(key data)
{ InsertBST(T->LC,key);

} else if(key >T->data)
{

InsertBST(T->RC,key);

}

else

return 0; } //插入二叉树函数
int Delete(btree &T) {
btree q,s;

if (!(T)->RC) { //右子树为空重接它的左子树

q=T;

T = (T)->LC;
free(q);

}
else
{

if(!(T)->LC){ //若左子树空则重新接它的右子树

q=T; T=(T)->RC; }
else{

q=T;

s=(T)->LC;

while(s->RC){

q=s;
s=s->RC; }

(T)->data=s->data; //s指向被删除结点的前驱

if(q!=T)

q->RC=s->LC;

else q->RC=s->LC;

free(s); } }

return 1; }

int PosttreeDepth(btree T) {

int hr,hl,max;

if(!T==NULL){ hl=PosttreeDepth(T->LC);

hr=PosttreeDepth(T->RC);

max=hl>hr?hl:hr;

return max+1; }

else

return 0; } //求深度
int DeleteBST(btree &T,int key)
{
if (!T)
return 0;
else{
if (key == (T)->data)
return Delete(T);
else {
if (key < (T)->data)
return DeleteBST(T->LC, key);
else
return DeleteBST(T->RC, key);
}
}
}
void preorder(btree root)
{
btree p = root;

btree stack[50];
int num = 0;
while (NULL != p || num>0)
{
while (NULL != p)
{
printf("%d ", p->data);
stack[num++] = p;
p = p->LC;
}
num--;
p = stack[num];
p = p->RC;
}
printf("\n");
}//先序非递归遍历
void inorder(btree root)
{ btree p=root;
int num = 0;

btree stack[50];

while (NULL != p || num>0)
{ while (NULL != p) { stack[num++] = p;

p = p->LC; }

num--;

p = stack[num];

printf("%d ", p->data);
p = p->RC;
}

printf("\n");
} //中序非递归遍历
void postorder(btree root)

{
btree p = root;
btree stack[50];
int num = 0;
btree have_visited = NULL;
while (NULL != p || num > 0)
{
while (NULL != p)
{
stack[num++] = p;
p = p->LC;
}
p = stack[num - 1];
if (NULL == p->RC || have_visited == p->RC)
{
printf("%d ", p->data);
num--;
have_visited = p;
p = NULL;
}
else { p = p->RC; }
}
printf("\n");
}//后序非递归遍历
btree CreateBST(int a[], int n)
{

btree bst=NULL;

int i=0;

while(i<n){

InsertBST(bst,a[i]);   
i++;

} return bst;
}//创建二叉树函数

int main()
{
    printf("---------------------二叉排序树的实现-------------------");
    printf("\n");
    int layer;
    int i;
    int num;
    printf("输入节点个数:");
    scanf ("%d",&num);
    printf("依次输入这些整数(要不相等)");
    int *arr = (int*)malloc(num * sizeof(int));
    for (i=0;i<num;i++) 
    { 
    scanf ("%d",arr+i); 
    }
    btree bst=CreateBST(arr,num);
    printf("\n");
    printf("二叉树创建成功!");
    printf("\n");
    layer=PosttreeDepth(bst);
    printf("树状图为:\n");
    printtree(bst, layer);
    printf("非递归遍历二叉树");
    printf("先序遍历:\n");
    preorder(bst);
    printf("中序遍历:\n");
    inorder(bst);
    printf("后序遍历:\n");
    postorder(bst);
    printf("树状图为:\n");
    printtree(bst, layer);

return 0; }

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序