1.num[10] = { 1,2,3,4,5,6,7,8,9,10 },排列成二叉树
2.父节点的位置为pos,左孩子的位置为2pos,右孩子的位置为2pos+1
3.那么递归结束条件为位置大于10时,
4.模拟几次递归,先序
- 创建节点1,值为1,左孩子位置为2
- 创建节点2,值为2,左孩子位置为4
- 创建节点3,值为4,左孩子位置为8
- 创建节点4,值为8,左孩子位置为16,超出,右孩子为17,超出,返回上层函数,即第三个节点右孩子位置为9
- 创建节点5,值为9…
- 接下来就可以写代码了,我想只传空指针给函数得到二叉树,就得改变这个空指针的值,所以用了指针的指针
#include<stdio.h>
#include<stdlib.h>
typedef struct Treenode {
struct Treenode* left;
struct Treenode* right;
int value;
}treenode;
void init(treenode** tree, int* num, int size, int pos);
void display(treenode* tree);
void main() {
int num[10] = {
1,2,3,4,5,6,7,8,