- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对先序遍历
树的存储结构有许多,不同的应用采用不同的存储方式。 1. 双亲表示 由于树中节点的双亲是唯一的,在每一个节点中设一个指向双亲的指针parent,就可唯一地表示一棵树,可用动态链表或静态链表实现。由于动态链表中无法找到孩子,故一般采用静态链表表示。 树的存储--双亲链表表示法 #define maxnode 32 typedef struct { datatype data; \\ 数据域 int parent; \\ 游标域 } ptree; ptree T[maxnode]; 求长子的算法 int FIRSTCHILD(ptree T[],int i) { int j; for (j=i+1;jmaxnode;j++) if (T[j].parent==i) return(j); return(0); } 2. 广义表表示 树的广义表表示 (结点的utype域没有画出) 3. 孩子链表示 A B C D E F G H I J A B C D E F G G I J 2 3 4 8 9 10 5 6 7 1 2 3 4 5 6 7 8 9 10 树的存储--孩子链表表示法 typedef struct cnode { int child; \\ 孩子结点序号 struct cnode *next; } link; ? typedef struct { datatype data; link *headptr; } ctree; ctree T[maxnode]; 4. 双亲-孩子链表示 A B C D E F G H I J A 0 B 1 C 1 D 1 E 2 F 2 G 3 G 4 I 4 J 4 2 3 4 8 9 10 5 6 7 1 2 3 4 5 6 7 8 9 10 5.左孩子-右兄弟表示法 树的左子女-右兄弟表示 data firstChild nextSibling 以二叉树作为树的存储结构,左指针指向其最左孩子,右指针指向它的兄弟,这种存储结构实际上是将树转化二叉树的存储结构,其优点是它和二叉树的二叉链表表示完全一样,可利用二叉树的算法来实现其运算。 以二叉树作为树的存储结构,左指针指向其最左孩子,右指针指向它的兄弟,这种存储结构实际上是将树转化二叉树的存储结构,其优点是它和二叉树的二叉链表表示完全一样,可利用二叉树的算法来实现其运算。 6.孩子、双亲-动态、静态链表表示法 class TreeLnode//树中兄弟链节点类 { public: int no;// TreeLnode *next; TreeLnode(int n=0,TreeLnode *c=NULL) { no=n;next=c;} }; templateclass Typeclass Treenode//树的节点类 { friend class TreeType; friend class BinaryTreeType; private: Type data; int weight; int pxh;//双亲序号 int next; TreeLnode *child; }; templateclass Typeclass Tree//树类 { friend class BinaryTreeType; private: TreenodeType *tree; int av;//可用表头 int no;//树的结点数 int Maxsize;//树的最大结点数 int sumweight;//各节点权重之和 CString sumweightstr; int Getnode();//在静态可用表中申请一个节点 void Freenode(int p);//在静态可用表中释放一个节点 void visit(int p,CString m_strout); int IDcurrent;//树中的当前节点的序号 } templateclass Typeclass Tree { public: Tree(int m); ~Tree(){ MakeEmpty();delete []tree; } bool IsEmpty(){ return (tree[0].child==NULL); } void MakeEmpty(); void print(); void Traversal(int k,CString m_strout); bool Read(LPCTSTR fn); v
您可能关注的文档
最近下载
- 初中英语阅读教学中的批判性思维培养与实践教学研究课题报告.docx
- 【2020第十届全国高中青年数学教师赛课】B12浙江-李雪纯-教学课件-停车距离问题.pptx VIP
- 2025年最新化学教资案例题目及答案.doc VIP
- 《医疗人员职业防护》课件.ppt VIP
- Samsung三星门锁SHP-DP738用户手册.pdf
- 21教招FB-河南-学霸作业-普通心理学1(讲义笔记)(瓜妹笑笑).pdf VIP
- 财务管理第四版课后习题答案宋秋萍高等教育出版社.pdf VIP
- 李白《赠孟浩然》课件.ppt VIP
- 超星尔雅学习通【俄国近代思想史(北京师范大学)】章节测试附答案.docx VIP
- 精品课件-四渡赤水.ppt VIP
原创力文档


文档评论(0)