Akie-dlans 2021-01-06 21:10 采纳率: 0%
浏览 3

调试发现左子树遍历完后程序还会读取空指针给上一级调用,导致遍历失败,原因?

#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode                     //结点结构 
{
	char data;                             //结点数据 
	struct BiTNode *lchild,*rchild;        //左右孩子指针 
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T);              //创建二叉树 
void PreOrderTraverse(BiTree T);           //二叉树前序遍历 
int main(void)
{
	BiTree T;
	
	CreateBiTree(&T);
	puts("Binary Tree creation is complete.");
	puts("Binary tree:");
	PreOrderTraverse(T);
	
	return 0;
}
void CreateBiTree(BiTree *T)
{
	char input;
	
	scanf("%c",&input);
	if(input=='#')
		T=NULL;
	else
	{
		(*T)=(BiTree)malloc(sizeof(BiTNode));
		(*T)->data=input;
		CreateBiTree(&(*T)->lchild);        //构造左子树 
		CreateBiTree(&(*T)->rchild);        //构造右子树  
	}
}
void PreOrderTraverse(BiTree T)
{
	if(T==NULL)
		return;
	printf("%c  ",T->data);                //显示结点数据,可以更改为其它操作 
	PreOrderTraverse(T->lchild);           //再先序遍历左子树 
	PreOrderTraverse(T->rchild);           //最后先序遍历右子树 
}
  • 写回答

1条回答 默认 最新

  • Akie-dlans 2021-01-06 21:45
    关注

    哎,自己傻了,创建的时候应该用*T=NULL,而不是T=NULL。

    评论

报告相同问题?

悬赏问题

  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?