zoukankan      html  css  js  c++  java
  • 链式二叉树遍历具体程序

    #include <stdio.h>
    
    struct BTNode
    {
        char data;
        struct BTNode * pLchild; //p是指针L是左,child是孩子
        struct BTNode * pRchild;
    };
    
    struct BTNode * CreateBTree();
    void PreTraverseBTree(struct BTNode *);
    void PreTraverseBTree(struct BTNode *);
    void PostTraverseBTree(struct BTNode *);
    
    int main()
    {
        struct BTNode * pT = CreateBTree();
    
        PreTraverseBTree(pT);
        InTraverseBTree(pT);
        PostTraverseBTree(pT);
    
        return 0;
    }
    void PreTraverseBTree(struct BTNode *pT)
    {
        if(pT!=NULL)  //if必须要有,虽然pT存在,但当pT->pLchild 或 pT->pRchild为空时没有,空没有指向的data域
        {
            printf("%c
    ", pT->data);
            if(pT->pLchild!=NULL)
                PreTraverseBTree(pT->pLchild);
            if(pT->pRchild)
                PreTraverseBTree(pT->pRchild);
        }
        //pT->pLchild 可以代表整个左子树
        /*
        先访问根节点
        再先序遍历左子树
        再先序遍历右子树
        */
    }
    
        void InTraverseBTree(struct BTNode *pT)
    {
        if(pT!=NULL)  //if必须要有,虽然pT存在,但当pT->pLchild 或 pT->pRchild为空时没有,空没有指向的data域
        {
            if(pT->pLchild!=NULL)
                InTraverseBTree(pT->pLchild);
            printf("%c
    ", pT->data);
            if(pT->pRchild)
                InTraverseBTree(pT->pRchild);
        }
    
    }
    void PostTraverseBTree(struct BTNode *pT)
    {
        if(pT!=NULL)  //if必须要有,虽然pT存在,但当pT->pLchild 或 pT->pRchild为空时没有,空没有指向的data域
        {
            if(pT->pLchild!=NULL)
                PostTraverseBTree(pT->pLchild);
            if(pT->pRchild)
                PostTraverseBTree(pT->pRchild);
            printf("%c
    ", pT->data);
        }
    
    }
    struct BTNode * CreateBTree()
    {
         struct BTNode * pA = (struct BTNode *)malloc(sizeof(struct BTNode));
         struct BTNode * pB = (struct BTNode *)malloc(sizeof(struct BTNode));
         struct BTNode * pC = (struct BTNode *)malloc(sizeof(struct BTNode));
         struct BTNode * pD = (struct BTNode *)malloc(sizeof(struct BTNode));
         struct BTNode * pE = (struct BTNode *)malloc(sizeof(struct BTNode));
    
         pA->data = 'A';
         pB->data = 'B';
         pC->data = 'C';
         pD->data = 'D';
         pE->data = 'E';
    
         pA->pLchild = pB;
         pA->pRchild = pC;
         pB->pLchild = pB->pRchild =NULL;
         pC->pLchild = pD;
         pC->pRchild = NULL;
         pD->pRchild = pE;
         pD->pLchild = NULL;
         pE->pLchild = pE->pRchild = NULL;
    
         return pA;
    }
  • 相关阅读:
    使用Result代替ResultSet作为方法返回值
    java项目使用的DBhelper类
    几种更新(Update语句)查询的方法【转】
    SQL sum case when then else【转】
    解决lucene 重复索引的问题
    在jsp中运用ajax实现同一界面不跳转处理事件
    IIS7如何实现访问HTTP跳转到HTTPS访问 转的
    完整备份数据库+差异备份,恢复到另外一台服务器
    windows mobile ,wince 系统,用代码启动cab文件安装
    compact framework windows mobile wm c#代码 创建快捷方式
  • 原文地址:https://www.cnblogs.com/spore/p/11093710.html
Copyright © 2011-2022 走看看