zoukankan      html  css  js  c++  java
  • 根据先序遍历和中序遍历创建二叉树(代码)

    先声明一个结构体:二叉树的三个元素,数据域,左子树,右子树。

    typedef char ElemType;
    typedef struct Node 
    {
        ElemType data;
        struct Node *lchild,*rchild;
    }BitTree;
    声明函数:返回值:二叉树
         pre:先序遍历字符串
         in:中序遍历字符串
         number:字符串长度
    BitTree *createBinTreeByPreIn(char *pre,char *in,int number);
     
    二叉树问题我喜欢使用递归方法解决,实现起来比较简单,但是效率可能有点低。
    使用递归时最重要的一个就是结束条件,下面是具体实现。
    结束条件:当字符串长度为0。
    BitTree *createBinTreeByPreIn(char *pre,char *in,int number)
    {
        if(number==0)  return NULL;
        char c = pre[0];
        int i = 0;
        while(i<number && in[i]!=c)i++;
        int leftNumber = i;
        int rightNumber = number - i - 1;
        BitTree *node = (BitTree *)malloc(sizeof(BitTree));
        node->data = c;
        node->lchild = createBinTreeByPreIn(&pre[1],&in[0],leftNumber);
        node->rchild = createBinTreeByPreIn(&pre[leftNumber+1],&in[leftNumber+1],rightNumber);
        return node;
    }

    最后主函数测试一下:

    int main(int argc,char **argv)
    {
        char a[SIZE],b[SIZE];
        BitTree *p;
        while(scanf("%s%s",a,b)!=EOF)
        {
            p = createBinTreeByPreIn(a,b,strlen(a));
            printf("
    ");
        }
        return 0;
    }
     
  • 相关阅读:
    在弹出窗口中显示带checkbox的
    列属性设定-隐藏列
    Aggregations应用-合计(total)、小计(subtotal)、平均值(average)
    排序(sort)、小计(subtotal)
    过滤器(filter)
    显示图标(ICON)和提示信息(Tooltips)
    单元格style应用-按钮、热点(hotspot)、checkbox等
    布局列分组
    图床-1
    q-1
  • 原文地址:https://www.cnblogs.com/wzqstudy/p/10081585.html
Copyright © 2011-2022 走看看