#include <iostream>
using namespace std;
struct BiNode
{
char data;
BiNode *lchild, *rchild;
};
void CreateBiTree(BiNode* &T) //注意:&的意思是传进来节点指针的引用,目的是让传递进来的指针发生改变
{
char c;
cin >> c;
if ('#' == c) //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
T = NULL;
else
{
T = new BiNode;
T->data = c;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrderTraverse(BiNode *T) //参数为BiNode * &T也可以
{
if (T)
{
cout << T->data << " ";
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiNode *T)
{
if (T)
{
InOrderTraverse(T->lchild);
cout << T->data << " ";
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiNode *T)
{
if (T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout << T->data << " ";
}
}
int main()
{
BiNode *BiTree; //声明一个指向二叉树根节点的指针
cout << "创建二叉树,其中A~Z字符代表数据,用'#'表示空树:" << endl;
CreateBiTree(BiTree);
cout << "创建二叉树成功……" << endl;
cout << "先序遍历:" << endl;
PreOrderTraverse(BiTree);
cout << endl;
cout << "中序遍历:" << endl;
InOrderTraverse(BiTree);
cout << endl;
cout << "后序遍历:" << endl;
PostOrderTraverse(BiTree);
cout << endl;
return 0;
}
树的创建
最新推荐文章于 2022-04-18 22:54:35 发布