7_3_1.C
上传用户:wyn840322
上传日期:2007-01-13
资源大小:294k
文件大小:2k
- /* ======================================== */
- /* 程式实例: 7_3_1.c */
- /* 二叉树的数组表示法 */
- /* ======================================== */
- /* ---------------------------------------- */
- /* 建立二叉树 */
- /* ---------------------------------------- */
- void createbtree(int *btree,int *data,int len)
- {
- int level; /* 树的阶层 */
- int i;
- btree[1] = data[1]; /* 建立根节点 */
- for ( i = 2; i <= len; i++ ) /* 用回路建立其它节点 */
- {
- level = 1; /* 从阶层1开始 */
- while ( btree[level] != 0 ) /* 是否有子树 */
- {
- if ( data[i] > btree[level] ) /* 是左或右子树 */
- level = level * 2 + 1; /* 右子树 */
- else
- level = level * 2; /* 左子树 */
- }
- btree[level] = data[i]; /* 存入节点数据 */
- }
- }
- /* ---------------------------------------- */
- /* 主程式: 建立数组的二叉树. */
- /* ---------------------------------------- */
- void main()
- {
- int btree[16]; /* 二叉树数组 */
- /* 二叉树节点数据 */
- int data[10] = { 0, 5, 6, 4, 8, 2, 3, 7, 1, 9 };
- int i;
- for ( i = 1; i < 16; i++ ) /* 清除二叉树数组 */
- btree[i] = 0;
- createbtree(btree,data,9); /* 建立二叉树 */
- for ( i = 1; i < 16; i++ ) /* 列出二叉树内容 */
- printf("%2d: [%d] n",i,btree[i]);
- }