使用递归法建立二叉树

相关代码:

include

using namespace std;
typedef struct node//创建节点结构
{
char data;//数据元素
struct node Lchild;//指向左孩子结点
struct node
Rchild;//指向右孩子结点
}BinNode,*BinTree;
void CreateTree(BinTree &T);//递归法建立二叉树
void PreOrder(BinTree &T);//先序遍历
void InOrder(BinTree &T);//中序遍历
void PostOrder(BinTree &T);//后序遍历

int main()
{
BinTree T;
cout<<"请输入二叉树节点:";
CreateTree(T);
cout<<"先序遍历:";
PreOrder(T);
cout<<endl;
cout<<"中序遍历:";
InOrder(T);
cout<<endl;
cout<<"后序遍历:";
PostOrder(T);
cout<<endl;
return 0;
}

void CreateTree(BinTree &T)//创建二叉树
{
char str;
cin>>str;
if(str=='0')//当输入0时,表示递归结束
T=NULL;
else
{
T=new BinNode;
T->data=str;
CreateTree(T->Lchild);//建立左子树
CreateTree(T->Rchild);//建立右子树
}
}

void PreOrder(BinTree &T)//先序遍历
{
if(T!=NULL)
{
cout<<T -> data;//输出根节点
PreOrder(T -> Lchild);//先序遍历左子树
PreOrder(T -> Rchild);//先序遍历右子树
}
}

void InOrder(BinTree &T)//中序遍历
{
if(T!=NULL)
{
InOrder(T -> Lchild);//中序遍历左子树
cout<<T -> data;//输出根节点
InOrder(T -> Rchild);//中序遍历右子树
}
}

void PostOrder(BinTree &T)//后序遍历
{
if(T!=NULL)
{
PostOrder(T -> Lchild);//后序遍历左子树
PostOrder(T -> Rchild);//后续遍历右子树
cout<<T -> data;//输出根节点
}
}

截图:

猜你喜欢

转载自www.cnblogs.com/ggad/p/10779758.html
今日推荐