数据结构课程设计二叉树的建立内容摘要:

trightChild=createBinaryTree(LRV+k,LVR+k+1,nk1)。 A D C B E F G H I J //从后序的 LRV+k 开始,对中序的 k+1 到 n1 右子序列的 nk1 个元素建立右子树 return t。 }。 执行文件如下: 首先进行后序序列以及中序序列的输入,然后构建出二叉树,接着输出前序序列进行验证,看是否程序准确运行。 void main(){ ThreadTreechar BT。 cinBT。 //输入后序序列、中序序列、建立二叉树、中序线索化 cout前序序列为。 (visit)。 //前序输出 coutendl。 } 第五章 源代码 Erchashu .h 头文件: templateclass T struct ThreadNode{ int ltag,rtag。 //线索标志,非零为线索, ltag 前驱, rtag 后继 ThreadNodeT *leftChild,*rightChild。 T data。 ThreadNode(const T item):data(item),leftChild(NULL), rightChild(NULL),ltag(0),rtag(0){} }。 templateclass T class ThreadTree{ protected: ThreadNodeT *root。 void destroy(ThreadNodeT *amp。 subTree)。 //p196 删除使之为空树 ThreadNodeT* createBinaryTree(T *VLR,T *LVR,int n)。 //利用前序序列和中序序列构造二叉树 void createInThread(ThreadNodeT *current,ThreadNodeT *amp。 pre)。 //中 序遍历建立线索二叉树,递归 p214 public: ThreadTree():root(NULL){} ~ThreadTree(){ if(root) destroy(root)。 }//析构函数 friend istreamamp。 operatorT(istreamamp。 in,ThreadTreeTamp。 BT)。 //调用createBinaryTree void PreOrder(void(*visit)(ThreadNodeT*p))。 void createInThread()。 //建立中序线索二叉树,调用同名保护成员函数p214 ThreadNodeT *First(ThreadNodeT *current)。 //找子树中序第一个结点 p213 ThreadNodeT *Next(ThreadNodeT *current)。 //找中序后继结点 p213 void InOrder(void(*vist)(ThreadNodeT *p))。 //中序遍历 p214 }。 //输入二叉树 templateclass T//调用 createBinaryTree istreamamp。 operator(istreamamp。 in,ThreadTreeTamp。 BT){ if(!=NULL) ()。 //BT 是空树或中序线索二叉树 cout输入二叉树的结点个数:。 int n。 inn。 T *LRV=new。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。