//说明,递归创建噢
#include "stdio.h"
#include "stdlib.h"
//节点定义
typedef struct TreeNode
{
int num;
struct TreeNode *m_Left,*m_Right;
}TreeNode,*Node;
//创建二叉排序树
void CreateBinaryTree(Node &node)
{
int data;
scanf("%d",&data);
if (data==-1)
{
return;
}
else
{
if (node==NULL)
{
node=(Node)malloc(sizeof(TreeNode));
node->num=data;
node->m_Left=NULL;
node->m_Right=NULL;
}
else
{
Node temp=node;
Node q=temp;
while(temp!=NULL)
{
q=temp;
if (temp->num>data)
{
temp=temp->m_Left;
}
else
{
temp=temp->m_Right;
}
}
//找到了
if (q->num>data)
{
Node p=(Node)malloc(sizeof(TreeNode));
p->num=data;
p->m_Left=NULL;
p->m_Right=NULL;
q->m_Left=p;
}
else if (q->num<=data)
{
Node p=(Node)malloc(sizeof(TreeNode));
p->num=data;
p->m_Left=NULL;
p->m_Right=NULL;
q->m_Right=p;
}
}
CreateBinaryTree(node);
}
}
//中序遍历
void MidOrderTravser(Node node)
{
if (node==NULL)
{
return;
}
MidOrderTravser(node->m_Left);
printf("%d ", node->num);
MidOrderTravser(node->m_Right);
}
//前序遍历
void PreOrderTravser(Node node)
{
if (node==NULL)
{
return;
}
printf("%d ", node->num);
PreOrderTravser(node->m_Left);
PreOrderTravser(node->m_Right);
}
//后序遍历
void LastOrderTravser(Node node)
{
if (node==NULL)
{
return;
}
LastOrderTravser(node->m_Left);
LastOrderTravser(node->m_Right);
printf("%d ", node->num);
}
int main(int argc, char const *argv[])
{
Node node=NULL;
CreateBinaryTree(node);
MidOrderTravser(node);
system("pause");
return 0;
}