CreateBinaryTree.h
template<class T> class BinaryTree;
template<class T>
class BinTreeNode
{
friend class BinaryTree<T>;
T data;
BinTreeNode *lchild;
BinTreeNode *rchild;
};
template<class T>
class BinaryTree
{
public:
BinaryTree(){ root = 0; };//
void CreateTree();//创建(按照前序规则)
void CreateTree(BinTreeNode<T> *¤tnode);
void PreOrder();//前序
void PreOrder(BinTreeNode<T> *¤tnode);
void InOrder();//中序
void InOrder(BinTreeNode<T> *¤tnode);
void PostOrder();//后序
void PostOrder(BinTreeNode<T> *¤tnode);
private:
BinTreeNode<T> *root;
};
template<class T>
void BinaryTree<T>::CreateTree()
{
CreateTree(root);
}
template<class T>
void BinaryTree<T>::CreateTree(BinTreeNode<T> *¤tnode)
{
char ch;
if ((ch = getchar()) == '#')
{
currentnode = 0;
}
else
{
currentnode = new BinTreeNode<T>();
currentnode->data = ch;
CreateTree(currentnode->lchild);
CreateTree(currentnode->rchild);
}
}
template<class T>
void BinaryTree<T>::PreOrder()
{
cout << "前序遍历(根-左-右)为";
PreOrder(root);
}
template<class T>
void BinaryTree<T>::PreOrder(BinTreeNode<T> *¤tnode)
{
if (currentnode)
{
cout << currentnode->data << ' ';
PreOrder(currentnode->lchild);
PreOrder(currentnode->rchild);
}
}
template<class T>
void BinaryTree<T>::InOrder()
{
cout << "中序遍历(左-根-右)为";
InOrder(root);
}
template<class T>
void BinaryTree<T>::InOrder(BinTreeNode<T> *¤tnode)
{
if (currentnode)
{
InOrder(currentnode->lchild);
cout << currentnode->data << ' ';
InOrder(currentnode->rchild);
}
}
template<class T>
void BinaryTree<T>::PostOrder()
{
cout << "后序遍历(左-右-根)为";
PostOrder(root);
}
template<class T>
void BinaryTree<T>::PostOrder(BinTreeNode<T> *¤tnode)
{
if (currentnode)
{
PostOrder(currentnode->lchild);
PostOrder(currentnode->rchild);
cout << currentnode->data << ' ';
}
}
main.cpp
#include "CreateBinaryTree.h"
#include <iostream>
using namespace std;
int main()
{
BinaryTree<char> Tree1;
Tree1.CreateTree();
Tree1.PreOrder();
cout << endl;
Tree1.InOrder();
cout << endl;
Tree1.PostOrder();
cout << endl;
system("pause");
return 0;
}
结果为:

本文介绍了一个使用模板类实现的二叉树数据结构,包括二叉树节点的定义,以及如何创建二叉树并进行前序、中序和后序遍历。通过示例代码展示了二叉树的创建过程和三种遍历方式的具体实现。
3958

被折叠的 条评论
为什么被折叠?



