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。

    评论

报告相同问题?

悬赏问题

  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?