二叉树数据结构及建立

二叉树数据结构:

typedef struct BiTNode{

    char data;

    struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

假设要建立一颗如下的二叉树,输入为:124##5##36##7##

二叉树数据结构及建立

我们采用两种方法递归和非递归

1、二叉树的先序递归建立过程(递归就是调用栈进行的操作)

直接上代码:

void CreateBiTree(BiTree &root) 

{  

    char ch; //要插入的数据  

    cin>>ch;  

    if(ch=='#')  

        root = NULL;  

    else  

    {  

        root = (BiTree)malloc(sizeof(BiTNode)); 

        if(root==NULL)

            return ; 

        root->data = ch;  

        printf("请输入%c的左孩子:",ch);  

        CreateBiTree1(root->lchild);  

        printf("请输入%c的右孩子:",ch);  

        CreateBiTree1(root->rchild);  

    }  

} 

建立过程截图(体现了栈。。):

二叉树数据结构及建立

2、二叉树的非递归建立

while(top != 0)

{

    while(ch != '#')

    {

        scanf("%c",&ch);

        if(ch != '#')

        {

            p = (link)malloc(sizeof(node));

            p->data = ch;

            s[top-1]->lch = p;

            s[top++] = p;       

        }

        else

            s[top-1]->lch = NULL;

    } 

    q = s[--top];

    scanf("%c",&ch);

    if(ch != '#')

    {

        p = (link)malloc(sizeof(node));

        p->data = ch;

        q->rch = p;

        s[top++] = p;

    }

    else

        q->rch = NULL;

}

也可采用STL中的栈stack实现。。

 

你可能感兴趣的:(数据结构)