二叉树的读入
下面是创建及遍历的代码:
#include <iostream>
#include <stack>
using namespace std;
typedef struct BitNode {
//创建二叉树的结构体;
char data;
BitNode* lchild, * rchild;
BitNode(char ch) //添加创建新结点的构造函数;
{
data = ch;
lchild = NULL;
rchild = NULL;
}
}*Tree, BitNode;//定义一个指针名,一个变量名,方便操作,后面所有遍历均是对指针的引用Tree&
void CreateTree(Tree& p) //先序遍历创建二叉树;
{
char ch;
cin >> ch; //输入字符;
if (ch == '#') //判断字符是否为结束当前结点的创建;
p = NULL;
else {
p = new BitNode(ch); //调用构造函数创建一个新结点,并且数据域赋值为ch;
CreateTree(p->lchild); //创建左结点;
CreateTree(p->rchild); //创建右结点;
}
}
void PreOrder(Tree& p) //递归前序遍历二叉树;
{
if (p) {
//判断当前结点是否是空;
cout << p->data << " "; //先输出当前结点的数据域的值;
PreOrder(p->lchild); //遍历当前结点的左子树;
PreOrder(p->rchild); //遍历当前结点的右子树;
}
}
void InOrder