二叉搜索树的创建与遍历

本文详细介绍了如何使用C++构建二叉搜索树,并实现了先序和层序遍历算法。通过输入节点数量及具体数值,可以构建出一棵二叉树,再通过两种遍历方式展示树的结构。
#include<iostream>
#include<queue>
using namespace std;
typedef struct node *Tree;
struct node{
	int v;
	Tree left,right;
};
Tree Insert(Tree T,int v)
{
	if(!T){  //如果树是空的 
		T = (Tree)malloc(sizeof(struct node));
		T->v = v;
		T->left = T->right = NULL;
	}else{
		if(v > T->v)
			T->right = Insert(T->right,v);
		else if(v < T->v)
			T->left = Insert(T->left,v);
	}
	return T;
}

Tree BuildTree()
{
	//输入结点数 
	Tree T = NULL;
	int n,v;
	cout<<"请输入结点的个数"<<endl;
	cin>>n;
	for(int i = 0; i < n; i++){
		cin>>v;
		T = Insert(T,v);
	} 
	return T;
}
//先序遍历
void preOrder(Tree T)
{
	
	if(T){
		cout<<T->v<<" ";
		preOrder(T->left);
		preOrder(T->right);
	}
}
//层序遍历
void levelOrder(Tree T)
{
	if(!T) return;
	queue<Tree>q;
	q.push(T);
	while(!q.empty()){ //当队列不是空时 
		Tree temp = q.front();
		q.pop();
		cout<<temp->v<<" ";
		if(temp->left != NULL) q.push(temp->left);
		if(temp->right != NULL) q.push(temp->right);
	}
} 

int main()
{
	Tree T;
	T = BuildTree();
	preOrder(T); //前序遍历 
	cout<<endl;
	levelOrder(T); //层序遍历 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值