构造一个二叉查找树-C++实现
构造一个二叉查找树-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<<"\t";
- Print(root->right);
- }
评论暂时关闭