zoukankan      html  css  js  c++  java
  • 链式二叉树

    # include <stdio.h>
    # include <malloc.h>
    
    struct BTNode
    {
        char data;
        struct BTNode * pLchild; //p是指针 L是左  child是孩子
        struct BTNode * pRchild;
    };
    
    void PostTraverseBTree(struct BTNode * pT);
    struct BTNode * CreateBTree(void);
    void PreTraverseBTree(struct BTNode * pT);
    void InTraverseBTree(struct BTNode * pT);
    
    int main(void)
    {
        struct BTNode * pT = CreateBTree();
        
    //    PreTraverseBTree(pT);
    //    InTraverseBTree(pT);
        PostTraverseBTree(pT);
        
        return 0;
    }
    
    void PostTraverseBTree(struct BTNode * pT)
    {
        if (NULL != pT)
        {
            if (NULL != pT->pLchild)
            {
                PostTraverseBTree(pT->pLchild);
            }    
            if (NULL != pT->pRchild)
            {
                    PostTraverseBTree(pT->pRchild);
                //pT->pLchild可以代表整个左子树
            }
            printf("%c
    ", pT->data);
        }
    }
    
    void InTraverseBTree(struct BTNode * pT)
    {
        if (NULL != pT)
        {
            if (NULL != pT->pLchild)
            {
                InTraverseBTree(pT->pLchild);
            }
            
            printf("%c
    ", pT->data);
        
            if (NULL != pT->pRchild)
            {
                    InTraverseBTree(pT->pRchild);
                //pT->pLchild可以代表整个左子树
            }    
        }
    }
    
    void PreTraverseBTree(struct BTNode * pT)
    {
        if (NULL != pT)
        {
            printf("%c
    ", pT->data);
        
            if (NULL != pT->pLchild)
            {
                PreTraverseBTree(pT->pLchild);
            }
            
            if (NULL != pT->pRchild)
            {
                    PreTraverseBTree(pT->pRchild);
                //pT->pLchild可以代表整个左子树
            }    
        }    
    
    /*
        伪算法
        先访问根节点
        再先序访问左子树
        再先序访问右子树
    */
    }
    
    struct BTNode * CreateBTree(void)
    {
        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->pLchild = NULL;
        pD->pRchild = pE;
        pE->pLchild = pE->pRchild = NULL;
    
        return pA;
    }
  • 相关阅读:
    448. Find All Numbers Disappeared in an Array
    447. Number of Boomerangs
    441. Arranging Coins
    438. Find All Anagrams in a String
    437. Path Sum III
    434. Number of Segments in a String
    422. Valid Word Square
    415. Add Strings
    414. Third Maximum Number
    [codility]Array-closest-ascenders
  • 原文地址:https://www.cnblogs.com/zhujialei123/p/9630033.html
Copyright © 2011-2022 走看看