初始化错误!!二叉树遍历当前结点至根节点的路径。
#include<stdio.h>#include<stdlib.h>
#define maxsize 100
typedef struct node
{
struct node * lchild;
struct node * rchild;
struct node * parent;
int data;
}btnode;
int path(node *t,node *s)
{
node *st[maxsize];
node *p;
int i,flag,top=-1;
do
{
while(t)
{
top++;
st[top]=t;
t=t->lchild;
}
p=NULL;
flag=1;
while(top!=-1&&flag)
{
t=st[top];
if(t->rchild==p)
{
if(t==s)
{
for(i=0;i<=top;i++)
printf("%c",st[top]->data);
return 1;
}
else
{
top--;
p=t;
}
}
else
{
t=t->rchild;
flag=0;
}
}
}while(top!=-1);
return 0;
}
int main()
{
node *st[100]={},*p,*t;
int top=-1,k=0,j=0,m=0;
char a[maxsize]="a(b(d,),c(,g))";
char ch='\0';
p=(node *)malloc(sizeof(node));
p->lchild=NULL;p->rchild=NULL;
p->data=a[0];
t=p;
ch=a[0];
while(ch!='\0')
{
switch(ch)
{
case '(':top++;st[top]=p;k=1;break;
case ')':top--;break;
case ',':k=2;break;
default:p=(node *)malloc(sizeof(node));
p->rchild=NULL;p->lchild=NULL;
p->data=ch;
switch(k)
{
case 1:st[top]->lchild=p;break;
case 2:st[top]->rchild=p;break;
}
}
j++;
ch=a[j];
}
t=t->lchild;
printf("%c",t->data);
//path(b,t);
scanf("%d",&k);
}
在vs2010下建立的空项目,path()函数是输出路径函数,但是在创建完链式二叉树时,无法遍历“t”树,主函数中“t”的头结点指向“p”,“p”结点完成二叉树的建立后,输出“t”的任意子节点的“data”值都不行,都出错“0X0000001473处有异常:0XC00004:读取位置0X0000c时发生访问错误”