二叉数的创建

来源:互联网 发布:淘宝logo怎么设计 编辑:程序博客网 时间:2024/05/17 22:25

实现一种创建二叉树的方法。输入形式如下:8 7 3 1 # 5 6 2 4 # # # # 9 @,@代表输入结束,#代表此节点为空。

实现方法:

1.遍历输入数组,若当前为

1.若输入第一个字符为@,则返回空树

2.将第一字符生成树节点,作为树的根节点,并将其放入一个字符队列queue中

3.遍历输入字符数组

a.若当前输入为@,则结束程序并返回根节点

b.取出队列中字符,若为#,则遍历循环变量+2,并继续遍历

c.取出队列中字符,将当前输入字符生成树节点并作为队列字符中的左节点,并入队;若下一个输入为@,则结束并返回,否则将下一个作为队列的右节点,并入队


#include <stdio.h>#include "Queue.h"typedef elemType_Tree char;typedef struct myTreeNode{    elemType_Tree data;    struct myTreeNode *right;    struct myTreeNode *left;}Tree;Tree *CreateTreeNode(elemType_Tree data){    Tree *newNode = (Tree *)malloc(sizeof(Tree));    if(newNode == NULL)    {        printf("There is not enough memory to create a new tree node !\n");        eixt(1);    }else    {        newNode->data = data;        newNode->right = NULL;        newNode->left = NULL;    }    return newNode;}Tree *CreateTree(elemType_Tree input[], Tree *T){    Queue queue;    Queue *q = &queue;    int i = 0;    elemType_Tree QueueHead;        if(input[0] == '@' || input[0] == '#')    {        return T;    }else    {        T = CreateTreeNode(input[0]);        enQueue(q,intput[0]);    }        i = 1;    while(input[i] != '@')    {        QueueHead = outQueue(q);        ??????        i ++;    }        clearQueue(q);    return T;}int main(){    elemType_Tree input[] = "8731#5624####9@";    Tree *T = NULL;        T = CreateTree(input,T);        return 0;}


原创粉丝点击