#include<cstdio>
//二叉树结点
struct node{
int data;
node* lchild;
node* rchild;
};
//新建二叉树结点
node* newnode(int data){
node* a = new node;
a->data = data;
a->lchild = a->rchild = NULL;
return a;
}
//查找给定值,递归
void search(node* root,int data){
if(root == NULL) return;//递归边界
if(root->data == data){
//操作
}
search(root->lchild,data);
search(root->rchild,data);
}
//以二叉查找树为例的插入操作
void insert(int data,node* &root){
if(root == NULL){
root->data = data;
root->lchild = root->rchild = NULL;
//效果等同于newnode(data);
return;
}
if(data > root->data) insert(data,root->rchild);//插入右子树中
if(data < root->data) insert(data,root->lchild);//插入左子树中
}
//建立二叉树
node* creat(int data[],int n){
node* root = NULL;
for(int i = 0;i < n;i ++){
insert(data[i],root);
}
return root;
}
//对于完全二叉树,由于结点之间有固定的位置关系,即父节点为i时,左子节点为2i,右子节点为2i + 1,所以可以用数组存储
//需要注意的是,数组存储时,root结点下标是1,如果是0的话,2 * 0还是零,显然会出错了
int main(){
return 0;
}