#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); //层序遍历
}
二叉搜索树的创建与遍历
最新推荐文章于 2022-08-18 14:00:00 发布
本文详细介绍了如何使用C++构建二叉搜索树,并实现了先序和层序遍历算法。通过输入节点数量及具体数值,可以构建出一棵二叉树,再通过两种遍历方式展示树的结构。
901

被折叠的 条评论
为什么被折叠?



