7_3_1.C
上传用户:wyn840322
上传日期:2007-01-13
资源大小:294k
文件大小:2k
源码类别:

数据结构

开发平台:

C/C++

  1. /* ======================================== */
  2. /*    程式实例: 7_3_1.c                     */
  3. /*    二叉树的数组表示法                    */
  4. /* ======================================== */
  5. /* ---------------------------------------- */
  6. /*  建立二叉树                              */
  7. /* ---------------------------------------- */
  8. void createbtree(int *btree,int *data,int len)
  9. {
  10.    int level;                       /* 树的阶层           */
  11.    int i;
  12.    btree[1] = data[1];              /* 建立根节点         */
  13.    for ( i = 2; i <= len; i++ )     /* 用回路建立其它节点 */
  14.    {
  15.       level = 1;                    /* 从阶层1开始        */
  16.       while ( btree[level] != 0 )   /* 是否有子树         */
  17.       {
  18.          if ( data[i] > btree[level] )   /* 是左或右子树  */
  19.             level = level * 2 + 1;  /* 右子树             */
  20.          else
  21.             level = level * 2;      /* 左子树             */
  22.       }
  23.       btree[level] = data[i];       /* 存入节点数据       */
  24.    }
  25. }
  26. /* ---------------------------------------- */
  27. /*  主程式: 建立数组的二叉树.               */
  28. /* ---------------------------------------- */
  29. void main()
  30. {
  31.    int btree[16];                   /* 二叉树数组         */
  32.    /* 二叉树节点数据 */
  33.    int data[10] = { 0, 5, 6, 4, 8, 2, 3, 7, 1, 9 };
  34.    int i;
  35.    for ( i = 1; i < 16; i++ )       /* 清除二叉树数组     */
  36.       btree[i] = 0;
  37.    createbtree(btree,data,9);      /* 建立二叉树         */
  38.    for ( i = 1; i < 16; i++ )       /* 列出二叉树内容     */
  39.       printf("%2d: [%d] n",i,btree[i]);
  40. }