| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:初始化错误!!二叉树遍历当前结点至根节点的路径。
只看楼主 加入收藏
mhchen2010
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-25
结帖率:0
收藏
 问题点数:0 回复次数:0 
初始化错误!!二叉树遍历当前结点至根节点的路径。
#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时发生访问错误”
搜索更多相关主题的帖子: include parent 二叉树 
2013-06-19 10:52
快速回复:初始化错误!!二叉树遍历当前结点至根节点的路径。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014263 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved