多叉树的结点:
template<class T>
struct multreenode{
T data; //数据
multreenode *parent; //父节点
multreenode *left; //左兄弟
multreenode *right; //又兄弟
multreenode *firstChild,*lastChild; //第一个子节点,最后一个子节点
};
有数据,父亲结点,左右兄弟节点,第一个子节点和最后一个子节点。
程序的输入是使用广义表表示的多叉树,上图的输入是 a(b(d,e,f),c)#
#表示输入结束。
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
// 多叉树的结构
template<class T>
struct multreenode{
T data; //数据
multreenode *parent; //父节点
multreenode *left; //左兄弟
multreenode *right; //又兄弟
multreenode *firstChild,*lastChild; //第一个子节点,最后一个子节点
};
template<class T>
class multree{
public:
multree():root(NULL){}
multree(T val):Refval(val),root(NULL){}
multree(multree <T> &s); //赋值构造函数
~multree(){destroy(root);}
//判断树是否为空
bool IsEmpty(){
return (root==NULL)?true:false;
}
//返回结点个数
int size(multreenode<T> *root){
int count = 0;
if(root != NULL){
count++;
if(root->firstChild != NULL){
multreenode<T> *temp = root->firstChild;
multreenode<T> *temp1 = root->lastChild;
while(temp != temp1){
count += s