您的位置:首页 > 编程语言 > C语言/C++

【面试题精选】1-构造一个二叉查找树-C++实现

2012-09-26 10:48 531 查看
根据输入的数组元素,构造一个二叉查找树。
#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<<"\t";
Print(root->right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 tree list null struct
相关文章推荐