文档详情

数据结构树的讲解.pptx

发布:2025-04-14约7.8千字共10页下载文档
文本预览下载声明

6.4树和森林

6.4.1树的存储结构一、双亲表示法(顺序存储)//-----------树的双亲表存储表示----------//#defineMAX_TREE_SIZE100typedefstructPTNode{TElemTypedata;intparent;//双亲位置域}PTNode;typedefstruct{PTNodenodes[MAX_TREE_SIZE];intn;//结点数}PTree;

双亲表示法举例RADEFCBGKHR-1A0B0C0D1E1F3G6H6K60123456789数组下标:*便于涉及双亲的操作;*求结点的孩子时需要遍历整棵树。

6.4.1树的存储结构

二、孩子表示法(顺序存储)#defineMAX_TREE_SIZE100typedefstructPTNode{TElemTypedata;intchild1;//第1个孩子位置域intchild2;//第2个孩子位置域......intchildd;//第d个孩子位置域}PTNode;typedefstruct{PTNodenodes[MAX_TREE_SIZE];intn;//结点数}PTree;

孩子表示法举例RADEFCBGKH0123456789数组下标:*便于涉及孩子的操作;求双亲不方便;*采用同构的结点,空间浪费。R1A4B0C6D0E0F7G0H0K023500000000089000000

孩子链表存储表示(链式存储)typedefstructCTNode{//孩子结点intchild;structCTNode*next;}*ChildPtr;typedefstruct{TElemTypedata;ChildPtrfirstchild;//孩子链表头指针}CTBox;typedefstruct{CTBoxnodes[MAX_TREE_SIZE];intn,r;//结点数和根的位置}CTree;

孩子链表存储表示举例RADEFCBGKH0123456789数组下标:*便于涉及孩子的操作;*求结点的双亲时不方便。RAB/CD/E/FG/H/K/123/45/6/789/T.nodes[];T.n=10;T.r=0;

例1:设树T以孩子链表为存储结构,

寻找值为x的双亲结点的算法如下:Statusparent(CtreeT,TElemTypex){//当值为x的结点不存在时返回-2;//当值为x的结点为根结点时返回-1,//否则返回x结点的双亲结点的下标值.if(T.nodes[T.r].data==x)return–1;

显示全部
相似文档