数据结构的一个简单作业,关于二叉树的遍历

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:45:01
求C++代码,实现二叉树的创建,递归前序遍历,递归中序遍历,递归后序遍历,非递归前序遍历,非递归中序遍历,非递归后序遍历。

一共这7个需求,要求每个算法的方法独立,易读。并且代码是可运行的。

如果中意,分数可以再追加的。

哪位高手帮忙?拜谢了~~~
晕啊,我只要那6种遍历,2楼的,你就这样复制,粘贴给我,还包括了那么多其他的方法,居然还有堆栈类和队列的类,这个难道C++没有自带的吗? 100分啦,负责点行不?

其中的求树叶,求深度的你不要可以去掉。
另外层次遍历和队列可以去掉。但是非递归先序遍历之类的需要用到栈。
我知道C++有栈的类,但是我用我自己写的有什么问题。
我的每个算法都是相互独立的,想调用什么遍历只要在主函数调用就行了。
#ifndef B_I_T_R_E_E
#define B_I_T_R_E_E
#include <iostream>
template <class TElemType>
struct BiTNode{
TElemType data;
BiTNode<TElemType> *lchild,*rchild;
};

template <class TElemType>
class BiTree
{
public:
void CreateBiTree(BiTNode<TElemType> *&T);
void CreateBiTree();
void PreOrderTraverse(BiTNode<TElemType> *T);
void PreOrderTraverse();
void InOrderTraverse(BiTNode<TElemType> *T);
void InOrderTraverse();
void PostOrderTraverse(BiTNode<TElemType> *T);
void PostOrderTraverse();
private:
BiTNode<TElemType> *T;
};
template <class TElemType>
void BiTree<TElemType>::CreateBiTree(BiTNode<TElemType> *&T)
{
TElemType ch;
cin >>