易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
构造一个二叉查找树-C++实现
根据输入的数组元素,构造一个二叉查找树。
#include <iostream>
using
namespace
std;
/*二叉查找树结构*/
typedef
struct
BSTree
{
int
node_value;
struct
BSTree * left;
struct
BSTree * right;
}Tree;
/*****构造二叉查找树**********************************************/
void
CreateBSTree(Tree * root,
int
node_value);
Tree * CreateBSTree(
int
* array_list,
int
array_length);
void
Print(Tree* root);
/***************************************************************/
/***************************************************************/
int
main(
int
argc,
char
* argv)
{
Tree * root = NULL;
int
list[]={5,3,4,9,1,7,11};
root = CreateBSTree(list,7);
std::cout<<"Cearte BSTree."<<std::endl;
Print(root);
return
0;
}
/*生成二叉查找树*/
Tree * CreateBSTree(
int
* array_list,
int
array_length)
{
if
(array_length <= 0)
{
return
false
;
}
Tree * root = NULL;
root =
new
BSTree();
root->left = NULL;
root->right = NULL;
root->node_value = array_list[0];
for
(
int
i=1;i<array_length;i++)
{
CreateBSTree(root,array_list[i]);
}
return
root;
}
void
CreateBSTree(Tree * root,
int
node_value)
{
if
(root == NULL)
{
return
;
}
if
(root->node_value > node_value)
{
if
(root->left == NULL)
{
Tree * node =
new
Tree();
node->left = NULL;
node->right = NULL;
node->node_value = node_value;
root->left = node;
}
else
{
CreateBSTree(root->left,node_value);
}
}
else
{
if
(root->right == NULL)
{
Tree * node =
new
Tree();
node->left = NULL;
node->right = NULL;
node->node_value = node_value;
root->right = node;
}
else
{
CreateBSTree(root->right,node_value);
}
}
}
/*中序排序输出二叉查找树*/
void
Print(Tree* root)
{
if
(root == NULL)
{
return
;
}
Print(root->left);
std::cout<<root->node_value<<" ";
Print(root->right);
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图