实现二叉树的各种基本运算的算法代码
    (一)创建二叉树
   
    1. 二叉树的链表存储结构:
    //定义二叉树的链表存储结构
    typedef struct BiTNode
    {
    char data;
    struct BiTNode *lchild, *rchild;
    } BiTNode, *BiTree;
    2.利用二叉树的链表存储结构,创建一棵二叉树
    //根据二叉树的链表存储结构,创建一棵二叉树
    BiTree CreateBiTree(BiTree T)
    {
    char c;
    scanf(&c);
    if(c=='#')
    T=NULL;
    else
    {
    T=(BiTree)malloc(sizeof(BiTNode)); // 产生根节点
    T->data=c; // 生成根结点
    T->lchild = CreateBiTree(T->lchild); // 构造左子树
    T->rchild = CreateBiTree(T->rchild); // 构造右子树
    }
    return T;
    }
    (二)二叉树的遍历
    1.先序遍历
    // 先序遍历:根左右
    void PreOrderTraverse(BiTree T)
    {
    if(T==NULL)
    return;
    printf('%c',T->data);  // 访问根结点
    PreOrderTraverse(T->lchild); // 遍历左子树
    PreOrderTraverse(T->rchild); // 遍历右子树
    }
    2.中序遍历
    // 中序遍历:左根右
    void InOrderTraverse(BiTree T)
    {
    if(T==NULL)
    return;
    InOrderTraverse(T->lchild); // 遍历左子树
    printf('%c',T->data);  // 访问根结点
    InOrderTraverse(T->rchild); // 遍历右子树
    }
    3.后序遍历
    // 后序遍历:左右根
    void PostOrderTraverse(BiTree T)
    {
    if(T==NULL)
    return;
    PostOrderTraverse(T->lchild); // 遍历左子树
    PostOrderTraverse(T->rchild); // 遍历右子树
    printf('%c',T->data);  // 访问根结点
    }
    (三)二叉树的其他基本运算
    1.计算二叉树的结点数
    // 计算二叉树的结点数
    int CountTreeNode(BiTree T)
    {
    if(T==NULL)
    return 0; // 二叉树T为空时,结点数为0
    else
    return CountTreeNode(T->lchild)+CountTreeNode(T->rchild)+1;
    }
    2.计算二叉树的深度
    // 计算二叉树的深度
    int TreeDepth(BiTree T)
    {
    int depL, depR;
二叉树的基本性质    if(T==NULL)
    return 0; // 二叉树T为空时,深度为0
    else
    {
    depL = TreeDepth(T->lchild); // 左子树深度
    depR = TreeDepth(T->rchild); // 右子树深度
    if(depL > depR)
    return depL+1;
    else
    return depR+1;
    }
    }。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。