关于树的初始化······
//(1)能进行初始化;即在算法中用双亲数组完成树的存储
//(2)输入任一结点,求其在数组中的存储位置
//(3)输入一结点,求其双亲
//(4)输入一结点,求其孩子
//(5)输入一结点,求其度(选作)
帮我写写······
希望有注释······
补充一下:
typedef char elemtype;
typedef struct
{
elemtype data;
int parent;
}pnode;
typedef struct
{
pnode nodes[maxsize];
int num;
}psqtree;
后面不知道了······
这个代码我写过,你可以参考下,提醒你代码还是自己写比较好:
#ifndef PTREE_H
#define PTREE_H
#include<>
#include<>
#include""
#include""
#define defaultSize 20
////////////////////////////////////////////////
//采用父结点表示法的树的结点结构
////////////////////////////////////////////////
template<class T>
struct PTreeNode
{
T data; //结点的数据域
int parent; //父结点的指针
PTreeNode(T val=-2,int par=-2) //构造函数
{data=val;parent=par;};
};
////////////////////////////树的结点结构定义结束
////////////////////////////////////////////////
//PTree类模板用父结点表示法实现的树类
////////////////////////////////////////////////
template<class T>
class PTree
{
public:
PTreeNode<T>* Nod
eList; //树的顺序存储的结点数组
int size; //当前树的结点的最后位置
int current; //当前结点的指针
int maxSize; //默认的最大数组空间
public:
PTree(char* s,int n); //构造函数,通过广义表描述字符串创建
~PTree() //析构函数,释放结点数组的内存空间
{delete [] NodeList;};
void Display(); //显示当前树的存储结构的内容
int FindParent(int i) //找出当前结点的父结点指针
{return NodeList[i].parent;};
int FindFirstChild(int i); //找出当前结点i的长子结点
int FindNextSibling(int i); //找出当前结点的相邻的兄弟结点
int monAncestor(int p,int q);//找p和q的最近公共祖先结点
int CountLeaf(); //计算当前树的叶子结点的个数
int Depth(); //求出当前树的深度
};
/////////////////////////////PTree类模板声明结束
////////////////////////////////////////////////
//构造函数通过广义表描述字符串创建树
////////////////////////////////////////////////
template<class T>
PTree<T>::PTree(char* s,int n)
{
/
关于树的初始化 来自淘豆网m.daumloan.com转载请标明出处.