BiTree.h
#include <vector>
//用vector建立堆栈
template <class T>
class Stack
{
public:
void Push( const T& t ) { elements.insert( elements.begin(), t ); }
T Pop() { T tmp = *(elements.begin());
elements.erase( elements.begin() ); return tmp; }
bool IsEmpty() { return elements.empty(); }
T Top() { return *(elements.begin()); }
private:
std::vector<T> elements;
};
//将结点存储在二叉链表中
struct BiTNode{
char data; //链表中存储的数据
struct BiTNode *lchild, *rchild;//左右孩子
};
void CreateBiTree(BiTNode* &T); //根据先序输入建树
void PreOrderTraverse(BiTNode* &T);//递归先序遍历
void Inorder(BiTNode* &T); //递归中序遍历
void Posorder(BiTNode* &T); //递归后序遍历
void PreorderDump(BiTNode* &T); //非递归先序遍历
void InorderDump(BiTNode* &T); //非递归中序遍历
void PostOrderDump(BiTNode* &T); //非递归后序遍历