zoukankan      html  css  js  c++  java
  • 树的孩子兄弟节点

    #include <iostream>
    using namespace std;
    
    typedef struct CSNode
    {
        char        data;
        struct CSNode * firstchild , * nextsibling ;
    }* CSTree;
    
    
    //====================================================
    #define MAXSIZE 10
    CSTree    q[MAXSIZE];
    int count=0;
        
    //初始化
    void init_cstree(CSTree &tree)
    {
        
        tree->firstchild = NULL;
        tree->nextsibling = NULL;
    }
    
    //创建树
    void creat_cstree(CSTree &T)
    {
    
        FILE *fin=fopen("树的孩子兄弟表示法.txt","r");  
        char fa=' ',ch=' ';
        for( fscanf(fin,"%c%c",&fa,&ch); ch!='#'; fscanf(fin,"%c%c",&fa,&ch) ) 
        {      
            CSTree p=(CSTree)malloc(sizeof(CSTree)); 
            init_cstree(p);
            p->data=ch;
            q[++count]=p;
    
            if('#' == fa)
                T=p;
            else
            {
                CSTree s = (CSTree)malloc(sizeof(CSTree));
                int i;
                for(i=1;i<=MAXSIZE;i++)
                {
                    if(q[i]->data == fa)    
                    {
                        s=q[i];
                        break;
                    }
                }
                 if(! (s->firstchild) )        //如果该双亲结点还没有接孩子节点
                    s->firstchild=p;
                else        //如果该双亲结点已经接了孩子节点
                {
                    CSTree temp=s->firstchild;
                    while(NULL != temp->nextsibling)
                    {
                        temp=temp->nextsibling;
                    }
                    temp->nextsibling=p;
                }
            }
        } 
        fclose(fin);
    }
    //前序遍历
    void print_cstree(CSTree &tree)
    {
            cout<<tree->data<<"  ";
            if(tree->firstchild!=NULL)
                print_cstree(tree->firstchild);
            if(tree->nextsibling!=NULL)
                print_cstree(tree->nextsibling);
    }
    //输出树中所有从根到叶子结点的路径的算法
    //void allpath_tree()
    int main()
    {
        CSTree    cstree;
        cstree=(CSTree)malloc(sizeof(CSTree));
        init_cstree(cstree);
        creat_cstree(cstree);
        //输出树
        print_cstree(cstree);
        cout<<endl;
        return 0;
    }
    

      


  • 相关阅读:
    Linux下vim中文乱码问题
    phoniex初始化
    [Android] 修改ImageView的图片颜色
    [osx] android studio下修改avd的hosts文件
    [osx] 设置crontab
    [osx] 查看端口被占用
    [Ubuntu] change mouse scrolling between standard and natural
    [Vuejs] 关于vue-router里面的subRoutes
    [nodejs] Error: unable to verify the first certificate
    [SublimeText] 安装包管理
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2198248.html
Copyright © 2011-2022 走看看