- #include <stdio.h>
- #include <stdlib.h>
- struct tree
- {
- int data;
- struct tree *left;
- struct tree *right;
- };
- typedef struct tree treenode;
- typedef treenode *btree;
- /*
- * 递归创建二叉树
- */
- btree create_recurse(int *data,int pos)
- {
- btree newnode;
- if(data[pos] == 0 || pos > 15)
- return NULL;
- else
- {
- newnode = (btree)malloc(sizeof(treenode));
- newnode->data = data[pos];
- //左子树
- newnode->left = create_recurse(data,pos*2);
- newnode->right = create_recurse(data,pos*2+1);
- return newnode;
- }
- }
- void printbtree(btree root)
- {
- btree ptr;
- printf("\\nroot is :%d\\n",root->data);
- ptr = root->left;
- printf("输出左子树:\\n");
- while(ptr)
- {
- printf("%d\\n",ptr->data);
- if(ptr->right)
- {
- printf("%d\\n",ptr->right->data);
- }
- ptr = ptr->left;
- }
- ptr = root->right;
- printf("输出右子树:\\n");
- while(ptr)
- {
- printf("%d\\n",ptr->data);
- if(ptr->left)
- {
- printf("%d\\n",ptr->left->data);
- }
- ptr = ptr->right;
- }
- }
- void main()
- {
- int data[16] = {0,5,4,6,2,0,0,8,1,3,0,0,0,0,7,9};
- //create a bree
- btree root = NULL;
- root = create_recurse(data,1);
- printbtree(root);
- }
- //该片段来自于http://www.codesnippet.cn/detail/3010201410857.html
来源: http://www.codesnippet.cn/detail/3010201410857.html