经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 计算机原理 » 查看文章
树存储结构的几种表示方法
来源:jb51  时间:2019/3/6 8:57:48  对本文有异议

名称:树存储结构的几种表示方法

说明:对于树的存储结构,一般有以下三种表示方法。

  • (1)、双亲表示法。这种存储方式采用一组连续的空间来存储每个结点,同时在每个结点中增设一个伪指针,
  • 指示其双亲在结点中的位置。这种方式比较容易找到双亲,但是不容易找到孩子。
  • (2)、孩子表示法。这种方法是将每个结点的孩子结点都用链表链接起来形成一个线性结构。这种方式比较
  • 容易找到结点的孩子,但是不容易找到其双亲。
  • (3)、孩子兄弟表示法。这种方式通俗的说是:“左结点是第一个孩子,右结点是下一个兄弟”。这种方式比较灵活,因为其可以转化为二叉树,对其的操作一般都能转化为二叉树的相关操作。

总之,选用不同的存储结构要根据具体的用途。(这当然是废话)。想说的是,在做一些题的时候,如果可以不用选用二叉树这种相对复杂的存储结构,那就选择线性的结构。对我来说,线性结构比二维的树的结构用的顺手。

  1. //树的存储结构之双亲表示法
  2. //树的结点定义
  3. typedef struct
  4. {
  5. int data; //数据元素
  6. int parent; //双亲的位置
  7. }PTNode;
  8. //树的类型定义
  9. typedef struct
  10. {
  11. //PTNode nodes[MAXSIZE]; //双亲表示
  12. int n; //结点数
  13. }PTree;
  14. //树的存储结构之孩子表示法
  15. //链表中孩子结点表示
  16. typedef struct CHNode
  17. {
  18. int pos; //孩子的位置
  19. CHNode *next; //指向下一个孩子的指针
  20. }CHNode;
  21. //数组中双亲结点表示
  22. typedef struct CHNode1
  23. {
  24. int data; //数据元素
  25. CHNode *firChild; //指向第一个孩子的指针
  26. }CHNode1;
  27. //树的类型表示
  28. typedef struct
  29. {
  30. CHNode1 nodes[MAXSIZE]; //所有的结点
  31. int n; //节点的个数
  32. }CHTree;
  33. //树的存储结构之孩子兄弟表示法
  34. typedef struct CSNode
  35. {
  36. int data; //结点的数据
  37. CSNode *firstchild,*nextbling; //第一个孩子和下一个兄弟
  38. }CSNode,*CSTree;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对w3xue的支持。如果你想了解更多相关内容请查看下面相关链接

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号