当前位置: 代码迷 >> 综合 >> BiTree Recursion
  详细解决方案

BiTree Recursion

热度:92   发布时间:2024-02-27 03:26:07.0
#include <stdio.h>
#include <stdlib.h>#define MAXSIZE 100;/*二叉树的数据结构定义*/
typedef struct BiTreeNode
{
    char data;struct BiTreeNode *left;struct BiTreeNode *right;
}BiTreeNode,*BiTree;
/*二叉树的建立--按照先序方式建立--录入数据--插入*/
void CreateBiTree(BiTree *T)
{
    char val;scanf("%c",&val);if(val == '#')*T = NULL;  //NULL即表示为空二叉树else{
    *T = (BiTree)malloc(sizeof(BiTreeNode));/* 申请一个结点存入数据 */(*T)->data = val;CreateBiTree(&(*T)->left);CreateBiTree(&(*T)->right);}
}/*二叉树的 先序遍历 根左右*/
void PreOrderTravel(BiTree T)
{
    if(T == NULL)return ;printf("%c ", T->data);PreOrderTravel(T->left);PreOrderTravel(T->right);
}
/*二叉树的 中序遍历 左根右*/
void InOrderTravel(BiTree T)
{
    if(T == NULL)return ;PreOrderTravel(T->left);printf("%c ", T->data);PreOrderTravel(T->right);
}
/*二叉树的 后序遍历 左右根*/
void TailOrderTravel(BiTree T)
{
    if(T == NULL)return ;PreOrderTravel(T->left);PreOrderTravel(T->right);printf("%c ", T->data);
}int main()
{
    BiTree T;T=(BiTree)malloc(sizeof(BiTreeNode));printf("请给二叉树按照先序遍历的输入顺序输入结点(空结点用符号'#'表示):\n");CreateBiTree(&T);printf("先序遍历的输出结果:\n");PreOrderTravel(T);printf("\n");printf("中序遍历的输出结果:\n");InOrderTravel(T);printf("\n");printf("后序遍历的输出结果:\n");TailOrderTravel(T);printf("\n");return 0;
}