开发者社区> 问答> 正文

二叉树采用链式存储结构,设计一个递归算法设计一棵给定二叉树的所有结点数

二叉树采用链式存储结构,设计一个递归算法设计一棵给定二叉树的所有结点数

展开
收起
知与谁同 2018-07-21 09:49:22 2213 0
2 条回答
写回答
取消 提交回答
  • 杀人者,打虎武松也。
    // ch6m.cpp : 定义控制台应用程序的入口点。
    #include<string.h>
    #include<malloc.h>
    #include<stdio.h>
    #define MAXNUM 100
    //#define FALSE 0
    typedef struct BiTNode
    {
    char data;
    struct BiTNode * lchild,* rchild;
    }BiTNode;

    BiTNode * creatNode()
    {
    int i,j;
    char ch;
    BiTNode *s[100];
    printf("请依次输入结点的序号:\n");
    scanf("%d",&i);
    printf("请输入该结点需要存放的字符:\n");
    getchar();
    scanf("%c",&ch);
    while(i!=0)
    {
    BiTNode * p = (BiTNode*)malloc(sizeof(BiTNode));
    p->data = ch;
    p->lchild = NULL;
    p->rchild = NULL;
    s[i] = p;
    if(i!=1)
    {
    j = i/2;
    if(i%2 == 0)
    s[j]->lchild = s[i];
    else
    s[j]->rchild = s[i];

    }

    printf("请依次输入第i个结点:\n");
    scanf("%d",&i);
    printf("请输入该结点需要存放的字符:\n");
    getchar();
    scanf("%c",&ch);
    }
    return s[1];

    }
    void PreorderTraverse(BiTNode *b)
    {
    if(b!=NULL)
    {
    printf("%c ",b->data);
    printf("\n");
    PreorderTraverse(b->lchild);
    PreorderTraverse(b->rchild);
    }
    }

    int main(void)
    {
    int n;
    BiTNode * b;
    b=creatNode();
    while(1)
    {
    printf("\n"); printf("\n"); printf("\n");
    printf("-------------菜单-----------------------------\n");
    printf(" 按-----------1-------进入先序递归遍历 :\n");
    printf("----------------------------------------------\n");
    printf(":");
    scanf("%d",&n);
    printf("\n"); printf("\n");
    switch(n)
    {
    case 1: PreorderTraverse(b);break;
    }
    }
    return 0;
    }
    2019-07-17 22:54:53
    赞同 展开评论 打赏
  • int Count(Bitree T)// 根结点指针T
    {
    int n = 0;
    if (T != NULL)
    n = 1 + Count(T->leftchild) + Count(T->rightchild);
    return n;
    }
    2019-07-17 22:54:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载