利用递归建立二叉树(前序遍历),每个节点的形式如下:
*lchild | data | *rchild |
二叉树建立及遍历代码如下:
#include <iostream>
using namespace std;
typedef char ElemType;
//二叉树节点定义
typedef struct BitNode
{
ElemType data;
struct BitNode *lchild, *rchild;
}BitNode, *BiTree;
//创建二叉树(前序遍历方式)
void CreateBiTree(BiTree &T)
{
char c;
cin.get(c);
if (' ' == c)//空格表示叶子
{
T = NULL;
}
else
{
T = new BitNode;
T->data = c;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
//前序遍历二叉树
void PreOrderTraversal(BiTree T, int level)
{
if (T)
{
cout << T->data << "位于第" << level << "层\n";
PreOrderTraversal(T->lchild, level + 1);
PreOrderTraversal(T->rchild, level + 1);
}
}
int main()
{
int level = 1;//层数
BiTree T = NULL;
cout << "请以前序遍历方式输入二叉树的数据(空格表示叶子):";
CreateBiTree(T);
PreOrderTraversal(T, level);
system("pause");
return 0;
}