树的存储结构转换

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:16:30
问题描述
将以孩子-兄弟表示的树转化为树的孩子表示
基本要求
输入树的先根序列和后根序列,建立树的孩子-兄弟链表。然后将其转化为树的孩子表示。最后,根据树的孩子表示按层次遍历树。

//声明树中的类以及结点结构,文件名为tree.h
#ifndef TREE_H
#define TREE_H

template <class T>//树中结点采用孩子兄弟表示法
struct TNode
{
T data;
TNode<T> *firstchild, *rightsib;
};

template <class T>
class Tree
{
public:
Tree( ); //构造函数,初始化一棵树,其前序序列由键盘输入
~Tree(void); //析构函数,释放树中各结点的存储空间
TNode<T>* Getroot( ); //获得指向根结点的指针
void PreOrder(TNode<T> *root); //前序遍历树
void PostOrder(TNode<T> *root); //后序遍历树
void LeverOrder(TNode<T> *root); //层序遍历树
private:
TNode<T> *root; //指向根结点的头指针
void Release(TNode<T> *root); //析构函数调用
};

#endif

//定义类中的成员函数,文件名为tree.cpp
#include<iostream>
#include<string>
#include"tree.h"
using namespace std;
/*
*前置条件:树不存在
*输 入:无
*功 能:构造一棵树
*输 出:无
*后置条件:产生一棵树
*/

template<class T> <