- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年最新整理]【5-3】树与森林的遍历及应用
数据结构;第五章 树;内容提要;5.6 树与森林;1.树的存储表示;(1)双亲表示法;A;Data;双亲表示法示例;(2)孩子表示法;孩子表示法示例; 在一棵树中,由于各结点的度数不一样,因此,结点的指针域个数的设置有两种方法:;多重链表示例;孩子表示法的特点;(3)双亲-孩子表示法;;(4)孩子-兄弟表示法; data;孩子-兄弟表示法的特点;树节点定义;template class T
class Tree { //树类
private:
TreeNodeT *root, *current; //根指针及当前指针
int Find (TreeNodeT *p, T value);
//在以p为根的树中搜索value
void RemovesubTree (TreeNodeT *p);
//删除以p为根的子树
bool FindParent (TreeNodeT *t, TreeNodeT *p);
//在以t为根的子树中, 寻找p的父节点,并置为当前节点
public:; Tree () { root = current = NULL; } //构造函数
bool Root (); //置根结点为当前结点
bool IsEmpty () { return root == NULL; }
bool FirstChild ();
//将当前结点的第一个子女置为当前结点
bool NextSibling ();
//将当前结点的下一个兄弟置为当前结点
bool Parent ();
//将当前结点的双亲置为当前结点
bool Find (T value);
//搜索含value的结点, 使之成为当前结点
…… //树的其他公共操作
};;树类的部分实现;template class T
bool TreeT::FindParent (TreeNodeT *t, TreeNodeT *p)
{ //在根为*t的树中找*p的双亲, 并置为当前结点
TreeNodeT *q = t-firstChild; //*q是*t长子
bool succ;
while (q != NULL q != p) { //扫描兄弟链
if ((succ = FindParent (q, p)) == true)
return succ; //递归搜索以*q为根的子树
q = q-nextSibling;
}
if (q != NULL q == p) { current = t; return true; }
else { current = NULL; return false; } //未找到
};template class T
bool TreeT::Parent ()
{ //置当前结点的双亲结点为当前结点
TreeNodeT *p = current;
if (current == NULL || current == root)
{ current = NULL; return false; }
//空树或根无双亲
return FindParent (root, p); //从根开始找*p的双亲结点
};template class T
bool TreeT::FirstChild ()
{ //在树中找当前结点的长子, 并置为当前结点
if (current current-firstChild )
{
current = current-firstChild;
return true;
}
current = NULL;
return false;
};template class T
bool TreeT::NextSibling ()
{ //在树中找当前结点的兄弟, 并置为当前结点
if (current current-nextSibling)
{
current = current-nextSibl
您可能关注的文档
- [2018年最新整理]《法律基础》教学改革研究.ppt
- [2018年最新整理]《注塑机入门》.doc
- [2018年最新整理]《汽车机械制图》课程教学大纲.doc
- [2018年最新整理]《浮力》课程设计.doc
- [2018年最新整理]《浮力的大小》观摩课点评.ppt
- [2018年最新整理]《海上扁舟》(史蒂芬克莱恩).doc
- [2018年最新整理]《液压与气压传动》教学案例.doc
- [2018年最新整理]《液压传动技术》课程标准(起重机械维修方向).doc
- [2018年最新整理]《液压与气压传动》第三阶段作业.doc
- [2018年最新整理]《液压传动技术》课程标准(起重机械驾驶方向).doc
- [2018年最新整理]【Java综合实训题】.doc
- [2018年最新整理]【5-2】二叉树的遍历及应用.ppt
- [2018年最新整理]【PPT模板下载】只想守护你的龙猫.pptx
- [2018年最新整理]【ppt】高三主题班会课件战胜惰性.ppt
- [2018年最新整理]【PPT】生活中的趣味数学_-_勾股定理.ppt
- [2018年最新整理]【一本通】2014届高考数学一轮复习第5章第34讲向量的数量积课件理.ppt
- [2018年最新整理]《高层建筑结构》课件.ppt
- [2018年最新整理]【】求一个数比另一个数多(少)百分之几课件ppt_PPT课件.ppt
- [2018年最新整理]【tong】数值建模.pptx
- [2018年最新整理]【Wind资讯】宏观经济百图2011年11月:.ppt
文档评论(0)