二叉搜索树的构造
#include <conio.h>
//BSTree
typedef struct BSTree
{
int m_nValue;
struct BSTree *m_left;
struct BSTree *m_right;
}Tree;
Tree *CreateBSTree(int *array_list,int nLength);
void CreateBSTree(Tree *root,int nNode);
void PrintTreeNode(Tree *root);
void CreateBSTree(Tree *root,int nNode)
{
ASSERT(root!=NULL && nNode!=root->m_nValue);
if (nNode<root->m_nValue)
{
if (root->m_left==NULL)
{
Tree *node=new Tree();
node->m_left=NULL;
node->m_right=NULL;
node->m_nValue=nNode;
root->m_left=node;
}
else
{
CreateBSTree(root->m_left,nNode);
}
}
else if (nNode>root->m_nValue)
{
if (root->m_right==NULL)
{
Tree *node=new Tree();
node->m_left=NULL;
node->m_right=NULL;
node->m_nValue=nNode;
root->m_right=node;
}
else
{
CreateBSTree(root->m_right,nNode);
}
}
}
Tree *CreateBSTree(int *array_list,int nLength)
{
Tree *root=NULL;
ASSERT(nLength>0);
root=new Tree();
root->m_nValue=array_list[0];
root->m_left=NULL;
root->m_right=NULL;
for (int i=1;i<nLength;i++)
{
CreateBSTree(root,array_list[i]);
}
return root;
}
void PrintTreeNode(Tree *root)
{
if (!root)
{
return ;
}
PrintTreeNode(root->m_left);
_cprintf(" %d \n",root->m_nValue);
PrintTreeNode(root->m_right);
}
void Run()
{
AllocConsole();
_cprintf("Output:\n");
int nNumList[]={6,7,34,67,12,54,98,0,2,4,61};
int nLength=7;
Tree *root=NULL;
root=CreateBSTree(nNumList,nLength);
PrintTreeNode(root);
}