c++实现二叉树类模板,在上一篇中增加了非递归遍历,适合数据量特别大的遍历
#include<iostream>
#include<stack>
using namespace std;
enum Tags
{
Left, Right
};
template<class T>
class StackElement;
template<class T>
class BinaryTree;
template<class T>
class BinaryTreeNode
{
friend class StackElement<T>;
friend class BinaryTree<T>;
T data;
BinaryTreeNode<T> *leftChild;
BinaryTreeNode<T> *rightChild;
};
template<class T>
class StackElement
{
public:
BinaryTreeNode<T>*pointer;
Tags tag;
};
template<class T>
class BinaryTree
{
BinaryTreeNode<T>*root;
public:
BinaryTree();
void CreatBinaryTree(BinaryTreeNode<T>*&rt);
void PreOrder(BinaryTreeNode<T>*rt);
void InOrder(BinaryTreeNode<T>*rt);
void PostOrder(BinaryTreeNode<T>*rt);
void PreOrderWithoutRecusion