二叉树模板

#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;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值