二叉树

来源:互联网 发布:森林防火预警软件 编辑:程序博客网 时间:2024/05/08 18:12

二叉树是树的特殊一种,具有如下特点:

1、每个结点最多有两颗子树,结点的度最大为2

2、左子树和右子树是有顺序的,次序不能颠倒

3、即使某结点只有一个子树,也要区分左右子树


二叉树的建立

//创建树//按先后次序输入二叉树中结点的值(一个字符),#表示空树//构造二叉链表表示的二叉树BiTree CreateTree(BiTree t){    char ch;    scanf("%c", &ch);     if(ch == '#')    {        t = NULL;    }    else    {        t = (BitNode *)malloc(sizeof(BitNode));        if(t == NULL)        {            fprintf(stderr, "malloc() error in CreateTree.\n");            return;        }         t->data = ch;                        //生成根结点        t->lchild = CreateTree(t->lchild);    //构造左子树        t->rchild = CreateTree(t->rchild);    //构造右子树    }    return t;}

遍历方法

先序遍历

//先序遍历void PreOrderTraverse(BiTree t){  //注意跳出条件    if(t != NULL)    {       //注意访问语句顺序        printf("%c ", t->data);        PreOrderTraverse(t->lchild);        PreOrderTraverse(t->rchild);    }}
中序遍历


//中序遍历void InOrderTraverse(BiTree t){    if(t != NULL)    {        InOrderTraverse(t->lchild);        printf("%c ", t->data);        InOrderTraverse(t->rchild);    }}
后序遍历

//后序遍历void PostOrderTraverse(BiTree t){    if(t != NULL)    {        PostOrderTraverse(t->lchild);        PostOrderTraverse(t->rchild);        printf("%c ", t->data);    }}



原创粉丝点击