`
pleasetojava
  • 浏览: 750787 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

二叉查找树的各种操作C++实现

 
阅读更多

// 链式二叉查找树的各种操作.cpp

#include "stdafx.h"
#include<iostream>
using namespace std;

struct BSTree
{
int data;
BSTree *left;
BSTree *right;
};
BSTree *T=NULL;
int a[100];


//插入排序二叉树
void insert(BSTree *b,BSTree *s)
{
if(b==NULL)
{
b=s;
}
else if(s->data==b->data)
return;
else if(s->data<b->data)
insert(b->left,s);
else
insert(b->right,s);
}


//创建排序二叉树
void createBSTree(BSTree *b,int *a,int n)
{
int i;
for(i=0;i<n;i++)
{
BSTree *s = (BSTree*)malloc(sizeof(BSTree));
s->data=a[i];
s->left=NULL;
s->right=NULL;
insert(b,s);
}
}


//查询排序二叉树
BSTree *search(BSTree *b,int x)
{
if(b==NULL)
return NULL;
else
{
if(b->data==x)
return b;
else if(b->data>x)
return search(b->left,x);
else
return search(b->right,x);
}
}

//前序遍历排序二叉树
void preOrder(BSTree *b)
{
if(b==NULL)
return;
else
{
cout<<b->data<<" ";
preOrder(b->left);
preOrder(b->right);
}
}


//中序遍历排序二叉树
void inOrder(BSTree *b)
{
if(b==NULL)
return ;
else
{
inOrder(b->left);
cout<<b->data<<" ";
inOrder(b->right);
}
}
//后序遍历排序二叉树
void postOrder(BSTree *b)
{
if(b==NULL)
return ;
else
{
postOrder(b->left);
postOrder(b->right);
cout<<b->data<<" ";
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int cases;
cout<<"请输入案例个数:"<<endl;
cin>>cases;
while(cases--)
{
int n;
cout<<"请输入元素个数:"<<endl;
cin>>n;
int i;
cout<<"请输入这些元素:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
cout<<"建立二叉排序树:"<<endl;
createBSTree(T,a,n);
cout<<"二叉排序树建立成功!"<<endl;
cout<<"请选择您要进行的操作:1.插入(I/i)、2.查找(S/s)、3.先序输出(P/p)、4.中序输出(M/m)、5.后序输出(L/l)"<<endl;
char s;
cin>>s;
if(s=='I'||s=='i')
{
cout<<"请输入您要插入的值:"<<endl;
int x;
cin>>x;
BSTree *p =(BSTree*)malloc(sizeof(BSTree));
p->data = x;
p->left = NULL;
p->right = NULL;
insert(T,p);
cout<<"插入成功!"<<endl;
}
else if(s=='S'||s=='s')
{
cout<<"请输入您要查找的值:"<<endl;
int x;
cin>>x;
BSTree *p=search(T,x);
cout<<"查找的值为:"<<p->data<<endl;
if(p->left != NULL)
cout<<"其左儿子的值为:"<<p->left->data<<endl;
if(p->right != NULL)
cout<<"其右儿子的值为:"<<p->right->data<<endl;
}
else if(s=='P'||s=='p')
{
cout<<"其前序输出为:"<<endl;
preOrder(T);
}
else if(s=='M'||s=='m')
{
cout<<"其中序输出为:"<<endl;
inOrder(T);
}
else
{
cout<<"其后序输出为:"<<endl;
postOrder(T);
}
cout<<endl;
}
system("pause");
return 0;
}

分享到:
评论

相关推荐

    C++实现的最优二叉查找树

    用C++实现的最优二叉查找树,简单,明了,是数据结构里经典必学算法,初学者适用

    二叉查找树C++实现

    在C++中实现二叉查找树,我们需要定义一个结构体或类来表示树节点,包括节点的值、指向左子节点和右子节点的指针。以下是一个简单的C++实现框架: ```cpp struct TreeNode { int val; TreeNode* left; TreeNode*...

    二叉查找树完整C++代码

    C++实现二叉查找树时,通常会定义一个结构体或类来表示树的节点,包括键值、左右子节点的指针。例如: ```cpp struct TreeNode { int key; TreeNode* left; TreeNode* right; }; ``` 在C++中,二叉查找树的基本...

    C++模板类二叉查找树的实现

    总之,这个C++程序提供了对二叉查找树基本操作的全面实现,包括增删查改以及多种遍历方式,这些功能在实际的编程项目中非常常见,对于理解和掌握数据结构有重要意义。通过阅读和理解这段代码,开发者可以加深对二叉...

    二叉查找树 减治法——C++代码

    在C++中实现二叉查找树,一般会定义一个结构体或类来表示树节点,包括键、值和子节点指针。然后,提供一系列成员函数来执行基本操作,如`insert`(插入)、`search`(查找)、`delete`(删除)。以下是C++实现二叉...

    二叉查找树的C++实现

    ### 二叉查找树的C++实现 #### 一、二叉查找树简介 二叉查找树(Binary Search Tree),也称作有序或排序二叉树,是一种特殊的二叉树数据结构,其每个节点包含一个键(key)和两个指针(指向左子树和右子树)。对于...

    二叉查找树实现简单的信息检索

    二叉查找树(Binary Search Tree,BST)是一种特殊类型的二叉树,它的每个节点都包含一个键(key)、一个关联的值、一个指向...在实际应用中,二叉查找树常被用于数据库索引、文件系统的目录结构和各种类型的搜索算法。

    二叉查找树的常用操作,含C++代码

    二叉查找树的常用操作,含C++代码,找工作的时候可以放在手机里看。

    二叉排序树C++实现

    二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键(key)、一个关联的值、一个指向左子树的引用和一个指向右子树的引用。在二叉排序树中...

    二叉查找树(二分搜索树)的C++方法实现

    资源内容:完整的二叉查找树C++头文件,包括运算符重载,bst类构造器、bst类析构器、destroy()、size()、insert(),迭代器类的声明与实现,++运算符重载(前置、后置)、--运算符重载、*运算符重载、!=运算符重载、...

    c++实现二叉查找树

    本文将详细介绍如何使用C++来实现一个二叉查找树(Binary Search Tree, BST),包括其基本操作:插入、删除、遍历等,并通过示例代码进行解释。二叉查找树是一种非常重要的数据结构,在计算机科学领域有着广泛的应用,...

    最优二叉查找树 动态规划法.cpp.rar

    5. **搜索函数**:实现对最优二叉查找树的搜索操作,以验证树的正确性。 动态规划算法的关键在于正确地定义状态和状态转移方程。在这个问题中,状态是与构建部分树相关的成本,而状态转移涉及到比较不同节点作为根...

    C++二叉查找树的实现

    通过上述代码解析,我们了解了二叉查找树的基本概念、插入及遍历操作的具体实现过程。这种数据结构因其高效的操作性能,在实际应用中非常常见。理解二叉查找树的原理对于掌握更高级的数据结构如AVL树、红黑树等也是...

    二叉排序树C++

    在实际编程中,这些概念和方法可以结合C++的面向对象特性进行封装,创建一个二叉排序树类,提供插入、查找、删除等方法,并实现相应的逻辑。通过练习和实践,可以深入理解二叉排序树的工作原理及其在数据结构和算法...

    二叉查找树的实现

    1、 定义二叉查找树的类。 2、 实验验证如下算法的正确性、各种功能及指标: 1)实现二叉查找树结构; 2) 实现二叉查找树的查找、插入和删除等算法;

    二叉查找树实现源码(C、C++、JAVA)

    在C、C++和Java这三种编程语言中实现二叉查找树,主要涉及以下几个关键操作: **插入操作:** - 首先,从根节点开始,比较新节点的键值与当前节点的键值。 - 如果新节点的键值小于当前节点,移动到当前节点的左子树...

    二叉查找树的插入、删除、遍历和查找等C++实现

    二叉查找树的插入、删除、遍历和查找等操作的C++实现,二叉查找树采用泛型结构

    二叉查找树 C++源代码 数据结构

    通过C++源代码实现二叉查找树,有助于深入理解数据结构的原理,并能灵活应用于各种实际问题。在学习数据结构基础,如张力译版的书籍中,二叉查找树是重要的知识点之一,理解并掌握其原理和实现方法对于提升编程技能...

Global site tag (gtag.js) - Google Analytics