c编译器树解析
❶ c语言二叉树的深度指什么怎么求
从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。
解体思路:
1.如果根节点为空,则深度为0,返回0,递归的出口。
2.如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度,
3.比较左右子树深度值,返回较大的那一个
4.通过递归调用
#include<iostream>
#include<stdlib.h>
usingnamespacestd;
structBinaryTreeNode
{
intm_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
};
//创建二叉树结点
BinaryTreeNode*CreateBinaryTreeNode(intvalue)
{
BinaryTreeNode*pNode=newBinaryTreeNode();
pNode->m_nValue=value;
pNode->m_pLeft=NULL;
pNode->m_pRight=NULL;
returnpNode;
}
//连接二叉树结点
voidConnectTreeNodes(BinaryTreeNode*pParent,BinaryTreeNode*pLeft,BinaryTreeNode*pRight)
{
if(pParent!=NULL)
{
pParent->m_pLeft=pLeft;
pParent->m_pRight=pRight;
}
}
//求二叉树深度
intTreeDepth(BinaryTreeNode*pRoot)//计算二叉树深度
{
if(pRoot==NULL)//如果pRoot为NULL,则深度为0,这也是递归的返回条件
return0;
//如果pRoot不为NULL,那么深度至少为1,所以left和right=1
intleft=1;
intright=1;
left+=TreeDepth(pRoot->m_pLeft);//求出左子树的深度
right+=TreeDepth(pRoot->m_pRight);//求出右子树深度
returnleft>right?left:right;//返回深度较大的那一个
}
voidmain()
{
//1
///
//23
///\
//456
///
//7
//创建树结点
BinaryTreeNode*pNode1=CreateBinaryTreeNode(1);
BinaryTreeNode*pNode2=CreateBinaryTreeNode(2);
BinaryTreeNode*pNode3=CreateBinaryTreeNode(3);
BinaryTreeNode*pNode4=CreateBinaryTreeNode(4);
BinaryTreeNode*pNode5=CreateBinaryTreeNode(5);
BinaryTreeNode*pNode6=CreateBinaryTreeNode(6);
BinaryTreeNode*pNode7=CreateBinaryTreeNode(7);
//连接树结点
ConnectTreeNodes(pNode1,pNode2,pNode3);
ConnectTreeNodes(pNode2,pNode4,pNode5);
ConnectTreeNodes(pNode3,NULL,pNode6);
ConnectTreeNodes(pNode5,pNode7,NULL);
intdepth=TreeDepth(pNode1);
cout<<depth<<endl;
system("pause");
}
出处:http://www.cnblogs.com/xwdreamer
❷ 计算机c语言中 什么是二叉树
在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。
树是由一个或多个结点组成的有限集合,其中:
⒈必有一个特定的称为根(ROOT)的结点;二叉树
⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、......Tn,而且, 这些集合的每一个又都是树。树T1、T2、......Tn被称作根的子树(Subtree)。
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,如上图的树,其度为2;树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。
2.树的深度——组成该树各结点的最大层次。
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合{T1,T2,T3}就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。
❸ 数据结构与算法分析 —— C 语言描述:二叉树
二叉树(binary tree)是一棵树,其中每个节点的儿子都不能多于两个。
二叉树的一个性质是平均二叉树的深度要比 N 小的多,这个性质有时很重要。分析表明,这个平均深度为 ,而对于特殊类型的二叉树,即二叉查找树(binary search tree)。其深度的平均值是 。不幸的是,在最坏情况下,这个深度可以大到 N-1 的。
因为一棵二叉树最多有两个儿子,所以我们可以用指针直接指向它们。树节点的声明在结构上类似于双链表的声明,在声明中,一个节点就是由 key(关键字)信息加上两个指向其他节点的指针(Left 和 Right)组成的结构。
应用于链表上的许多法则也可以应用到树上。特别地,当进行一次插入时,必须调用 malloc 创建一个节点。节点可以在调用 free 删除后释放。
我们可以用在画链表时常用的矩形框画出二叉树,但是,树一般画成圆圈并用一些直线连接起来,因为二叉树实际上就是图(graph)。当涉及树时,我们也不显示地画出 NULL 指针,因为具有 N 个节点的每一棵二叉树都将需要 N+1 个 NULL 指针。
二叉树有许多与搜索无关的重要应用。二叉树的主要用处之一是在编译器的设计领域。
上图就是一个表达式树(expression tree)。表达式树的树叶是操作树(operand),比如常数或者变量,而其他的节点为操作符(operator)。由于这里所有的操作都是二元的,因此这棵特定的树正好是二叉树,虽然这是最简单的情况,但是节点含有的儿子还是有可能多于两个的。一个节点也有可能只有一个儿子,如果有一目减算符(unary minus operator)的情形。可以将通过递归计算左子树和右子树所得到的值应用在根处的算符操作中而算出表达式树 T 的值。上面里的例子中,左子树的值是“((3+1) 3)/((9-5)+2)”,右子树的值是“(3 (7-4)+6)”,因此整棵树的表达式就是图上的结果。
我们可以通过递归产生一个带括号的左表达式,然后打印出在根处的运算符,最后再递归地产生一个带括号的右表达式而得到一个(对两个括号整体进行计算的)中缀表达式(infix expression)。这种一般的方法(左,节点,右)称为中序遍历(inorder traversal);由于其产生的表达式类型,这种遍历很容易记忆。
另一个遍历策略是递归打印出左子树、右子树,然后打印运算符。如果我们应用这种策略于上面的树,则输出将是“31+3 95-2+/743- 6+-”。这种遍历策略一般称为后序遍历(postorder traversal)。
第三种遍历策略是先打印出运算法,然后递归地打印出右子树和左子树。同样的,应用这种策略于上面的树,则输出将是“-/ ++313-952+ 3-746”,这是一种不太常用前缀(prefix)记法,这种遍历策略为先序遍历(preorder traversal)。
这里我们只给出一种算法,来把后缀表达式转变成表达式树。这里的要点是,一次一个符号地读入表达式。如果符号是操作符,那么我们就建立一个单节点树并将一个指向它的指针推入栈中。如果符号是操作符,那么我们就从栈中弹出指向两棵树 和 的那两个指针( 的先弹出)并形成一棵新的树,该树的根就是操作符,它的左、右儿子分别指向 和 。然后将这棵新树的指针压入栈中。
❹ C璇瑷閲岀殑浜屼斧镙
闾d釜鍙浜屽弶镙戝晩
镙戞槸涓绉嶉吨瑕佺殑闱炵嚎镐ф暟鎹缁撴瀯锛岀洿瑙傚湴鐪嬶纴瀹冩槸鏁版嵁鍏幂礌锛埚湪镙戜腑绉颁负缁撶偣锛夋寜鍒嗘敮鍏崇郴缁勭粐璧锋潵镄勭粨鏋勶纴寰堣薄镊铹剁晫涓镄勬爲闾f牱銆傛爲缁撴瀯鍦ㄥ㈣备笘鐣屼腑骞挎硾瀛桦湪锛屽备汉绫荤ぞ浼氱殑镞忚氨鍜屽悇绉岖ぞ浼氱粍缁囨満鏋勯兘鍙鐢ㄦ爲褰㈣薄琛ㄧず銆傛爲鍦ㄨ$畻链洪嗗烟涓涔熷缑鍒板箍娉涘簲鐢锛屽傚湪缂栬疟婧愮▼搴忓备笅镞讹纴鍙鐢ㄦ爲琛ㄧず婧愭簮绋嫔簭濡备笅镄勮娉旷粨鏋勚傚张濡傚湪鏁版嵁搴撶郴缁熶腑锛屾爲鍨嬬粨鏋勪篃鏄淇℃伅镄勯吨瑕佺粍缁囧舰寮忎箣涓銆备竴鍒囧叿链夊眰娆″叧绯荤殑闂棰橀兘鍙鐢ㄦ爲𨱒ユ弿杩般
涓銆佹爲镄勬傝堪
镙戠粨鏋勭殑鐗圭偣鏄锛氩畠镄勬疮涓涓缁撶偣閮藉彲浠ユ湁涓嶆涓涓鐩存帴钖庣户锛岄櫎镙圭粨镣瑰栫殑镓链夌粨镣归兘链変笖鍙链変竴涓鐩存帴鍓嶈秼銆备互涓嫔叿浣揿湴缁椤嚭镙戠殑瀹氢箟鍙婃爲镄勬暟鎹缁撴瀯琛ㄧず銆
锛堜竴锛夋爲镄勫畾涔
镙戞槸鐢变竴涓鎴栧氢釜缁撶偣缁勬垚镄勬湁闄愰泦钖堬纴鍏朵腑锛
钴埚繀链変竴涓鐗瑰畾镄勭О涓烘牴(ROOT)镄勭粨镣癸绂
钴夊墿涓嬬殑缁撶偣琚鍒嗘垚n>=0涓浜掍笉鐩镐氦镄勯泦钖圱1銆乀2銆......Tn锛岃屼笖锛 杩欎簺闆嗗悎镄勬疮涓涓鍙堥兘鏄镙戙傛爲T1銆乀2銆......Tn琚绉颁綔镙圭殑瀛愭爲(Subtree)銆
镙戠殑阃掑綊瀹氢箟濡备笅锛氾纸1锛夎呖灏戞湁涓涓缁撶偣锛堢О涓烘牴锛夛纸2锛夊叾瀹冩槸浜掍笉鐩镐氦镄勫瓙镙
1.镙戠殑搴︹斺斾篃鍗虫槸瀹藉害锛岀亩鍗曞湴璇达纴灏辨槸缁撶偣镄勫垎鏀鏁般备互缁勬垚璇ユ爲钖勭粨镣逛腑链澶х殑搴︿綔涓鸿ユ爲镄勫害锛屽备笂锲剧殑镙戯纴鍏跺害涓3;镙戜腑搴︿负闆剁殑缁撶偣绉颁负鍙剁粨镣规垨缁堢缁撶偣銆傛爲涓搴︿笉涓洪浂镄勭粨镣圭О涓哄垎鏋濈粨镣规垨闱炵粓绔缁撶偣銆傞櫎镙圭粨镣瑰栫殑鍒嗘灊缁撶偣缁熺О涓哄唴閮ㄧ粨镣广
2.镙戠殑娣卞害钬斺旂粍鎴愯ユ爲钖勭粨镣圭殑链澶у眰娆★纴濡备笂锲撅纴鍏舵繁搴︿负4锛
3.妫鏋椻斺旀寚鑻ュ共妫典簰涓岖浉浜ょ殑镙戠殑闆嗗悎锛屽备笂锲撅纴铡绘帀镙圭粨镣笰锛屽叾铡熸潵镄勪簩妫靛瓙镙惯1銆乀2銆乀3镄勯泦钖坽T1,T2,T3}灏变负妫鏋楋绂
4.链夊簭镙戋斺旀寚镙戜腑钖屽眰缁撶偣浠庡乏鍒板彸链夋″簭鎺掑垪锛屽畠浠涔嬮棿镄勬″簭涓嶈兘浜掓崲锛岃繖镙风殑镙戠О涓烘湁搴忔爲锛屽惁鍒欑О涓烘棤搴忔爲銆
5.镙戠殑琛ㄧず
镙戠殑琛ㄧず鏂规硶链夎稿氾纴甯哥敤镄勬柟娉曟槸鐢ㄦ嫭鍙凤细鍏埚皢镙圭粨镣规斁鍏ヤ竴瀵瑰浑𨰾鍙蜂腑锛岀劧钖庢妸瀹幂殑瀛愭爲鐢卞乏镊冲彸镄勯‘搴忔斁鍏ユ嫭鍙蜂腑锛岃屽瑰瓙镙戜篃閲囩敤钖屾牱镄勬柟娉曞勭悊锛涘悓灞傚瓙镙戜笌瀹幂殑镙圭粨镣圭敤鍦嗘嫭鍙锋嫭璧锋潵锛屽悓灞傚瓙镙戜箣闂寸敤阃楀彿闅斿紑锛屾渶钖庣敤闂𨰾鍙锋嫭璧锋潵銆傚备笂锲惧彲鍐欐垚濡备笅褰㈠纺锛
(A(B(E(K,L),F),C(G),D(H(M),I,J)))
5. 2 浜屽弶镙
1.浜屽弶镙戠殑锘烘湰褰㈡侊细
浜屽弶镙戜篃鏄阃掑綊瀹氢箟镄勶纴鍏剁粨镣规湁宸﹀彸瀛愭爲涔嫔垎锛岄昏緫涓娄簩鍙夋爲链変簲绉嶅熀链褰㈡侊细
(1)绌轰簩鍙夋爲钬斺(a)锛
(2)鍙链変竴涓镙圭粨镣圭殑浜屽弶镙戋斺(b)锛
(3)鍙冲瓙镙戜负绌虹殑浜屽弶镙戋斺(c)锛
(4)宸﹀瓙镙戜负绌虹殑浜屽弶镙戋斺(d)锛
(5)瀹屽叏浜屽弶镙戋斺(e)
娉ㄦ剰锛氩敖绠′簩鍙夋爲涓庢爲链夎稿氱浉浼间箣澶勶纴浣嗕簩鍙夋爲涓嶆槸镙戠殑鐗规畩𨱍呭舰銆
2.涓や釜閲嶈佺殑姒傚康锛
(1)瀹屽叏浜屽弶镙戋斺斿彧链夋渶涓嬮溃镄勪袱灞傜粨镣瑰害灏忎簬2锛屽苟涓旀渶涓嬮溃涓灞傜殑缁撶偣閮介泦涓鍦ㄨュ眰链宸﹁竟镄勮嫢骞蹭綅缃镄勪簩鍙夋爲锛
(2)婊′簩鍙夋爲钬斺旈櫎浜嗗彾缁撶偣澶栨疮涓涓缁撶偣閮芥湁宸﹀彸瀛愬コ涓斿彾缁撶偣閮藉勫湪链搴曞眰镄勪簩鍙夋爲,銆
3.浜屽弶镙戠殑镐ц川
(1) 鍦ㄤ簩鍙夋爲涓锛岀琲灞傜殑缁撶偣镐绘暟涓嶈秴杩2^(i-1)锛
(2) 娣卞害涓篽镄勪簩鍙夋爲链澶氭湁2^h-1涓缁撶偣(h>=1)锛屾渶灏戞湁h涓缁撶偣锛
(3) 瀵逛簬浠绘剰涓妫典簩鍙夋爲锛屽傛灉鍏跺彾缁撶偣鏁颁负N0锛岃屽害鏁颁负2镄勭粨镣规绘暟涓篘2锛
鍒橬0=N2+1锛
(4) 鍏锋湁n涓缁撶偣镄勫畬鍏ㄤ簩鍙夋爲镄勬繁搴︿负int锛坙og2n锛+1
(5)链垲涓缁撶偣镄勫畬鍏ㄤ簩鍙夋爲钖勭粨镣瑰傛灉鐢ㄩ‘搴忔柟寮忓瓨鍌锛屽垯缁撶偣涔嬮棿链夊备笅鍏崇郴锛
鑻I涓虹粨镣圭紪鍙峰垯 濡傛灉I<>1锛屽垯鍏剁埗缁撶偣镄勭紪鍙蜂负I/2锛
濡傛灉2*I<=N锛屽垯鍏跺乏鍎垮瓙锛埚嵆宸﹀瓙镙戠殑镙圭粨镣癸级镄勭紪鍙蜂负2*I锛涜嫢2*I>N锛屽垯镞犲乏鍎垮瓙锛
濡傛灉2*I+1<=N锛屽垯鍏跺彸鍎垮瓙镄勭粨镣圭紪鍙蜂负2*I+1锛涜嫢2*I+1>N锛屽垯镞犲彸鍎垮瓙銆
4.浜屽弶镙戠殑瀛桦偍缁撴瀯锛
(1锛夐‘搴忓瓨鍌ㄦ柟寮
type node=record
data:datatype
l,r:integer;
end;
var tr:array[1..n] of node;
(2)阈捐〃瀛桦偍鏂瑰纺锛屽傦细
type btree=^node锛
node=record
data:datatye;
lchild,rchild:btree;
end;
5.鏅阃氭爲杞鎹㈡垚浜屽弶镙戯细鍑℃槸鍏勫纻灏辩敤绾胯繛璧锋潵锛岀劧钖庡幓鎺夌埗浜插埌鍎垮瓙镄勮繛绾匡纴鍙鐣欎笅鐖舵瘝鍒板叾绗涓涓瀛愬コ镄勮繛绾裤
浜屽弶镙戝緢璞′竴镙鍊掓偓镌镄勬爲锛屼粠镙戞牴鍒板ぇ鍒嗘灊銆佸皬鍒嗘灊銆佺洿鍒板彾瀛愭妸鏁版嵁镵旂郴璧锋潵锛岃繖绉嶆暟鎹缁撴瀯灏卞彨锅氭爲缁撴瀯锛岀亩绉版爲銆傛爲涓姣忎釜鍒嗗弶镣圭О涓虹粨镣癸纴璧峰嬬粨镣圭О涓烘爲镙癸纴浠绘剰涓や釜缁撶偣闂寸殑杩炴帴鍏崇郴绉颁负镙戞灊锛岀粨镣逛笅闱涓嶅啀链夊垎鏋濈О涓烘爲鍙躲傜粨镣圭殑鍓嶈秼缁撶偣绉颁负璇ョ粨镣圭殑"鍙屼翰"锛岀粨镣圭殑钖庤秼缁撶偣绉颁负璇ョ粨镣圭殑"瀛愬コ"鎴"瀛╁瓙"锛屽悓涓缁撶偣镄"瀛愬コ"涔嬮棿浜掔О"鍏勫纻"銆
浜屽弶镙戯细浜屽弶镙戞槸涓绉嶅崄鍒嗛吨瑕佺殑镙戝瀷缁撴瀯銆傚畠镄勭壒镣规槸锛屾爲涓镄勬疮涓缁撶偣链澶氩彧链変袱妫靛瓙镙戯纴鍗虫爲涓浠讳綍缁撶偣镄勫害鏁颁笉寰楀ぇ浜2銆备簩鍙夋爲镄勫瓙镙戞湁宸﹀彸涔嫔垎锛岃屼笖锛屽瓙镙戠殑宸﹀彸娆″簭鏄閲嶈佺殑锛屽嵆浣垮湪鍙链変竴妫靛瓙镙戠殑𨱍呭喌涓嬶纴涔熷簲鍒嗘竻鏄宸﹀瓙镙戣缮鏄鍙冲瓙镙戙傚畾涔夛细浜屽弶镙戞槸缁撶偣镄勬湁闄愰泦钖堬纴杩欎釜闆嗗悎鎴栨槸绌虹殑锛屾垨鏄鐢变竴涓镙圭粨镣瑰拰涓ゆ5浜掍笉鐩镐氦镄勭О涔嬩负宸﹀瓙镙戝拰鍙冲瓙镙戠殑浜屽弶镙戠粍鎴愩
锛堜笁锛夊畬鍏ㄤ簩鍙夋爲
瀵规弧浜屽弶镙戯纴浠庣涓灞傜殑缁撶偣(鍗虫牴)寮濮嬶纴鐢变笅钥屼笂锛岀敱宸﹀强鍙筹纴鎸夐‘搴忕粨镣圭紪鍙凤纴渚垮缑鍒版弧浜屽弶镙戠殑涓涓椤哄簭琛ㄧず銆傛嵁姝ょ紪鍙凤纴瀹屽叏浜屽弶镙戝畾涔夊备笅锛氢竴妫靛叿链塶涓缁撶偣锛屾繁搴︿负K镄勪簩鍙夋爲锛屽綋涓斾粎褰撴墍链夌粨镣瑰瑰簲浜庢繁搴︿负K镄勬弧浜屽弶镙戜腑缂栧彿鐢1镊硁镄勯偅浜涚粨镣规椂锛岃ヤ簩鍙夋爲渚挎槸瀹屽叏浜屽弶镙戙傚浘4鏄涓妫靛畬鍏ㄤ簩鍙夋爲銆
涓夈佷簩鍙夋爲镄勯亶铡
阆嶅巻鏄瀵规爲镄勪竴绉嶆渶锘烘湰镄勮繍绠楋纴镓璋挞亶铡嗕簩鍙夋爲锛屽氨鏄鎸変竴瀹氱殑瑙勫垯鍜岄‘搴忚蛋阆崭簩鍙夋爲镄勬墍链夌粨镣癸纴浣挎疮涓涓缁撶偣閮借璁块梾涓娆★纴钥屼笖鍙琚璁块梾涓娆°傜敱浜庝簩鍙夋爲鏄闱炵嚎镐х粨鏋勶纴锲犳わ纴镙戠殑阆嶅巻瀹炶川涓婃槸灏嗕簩鍙夋爲镄勫悇涓缁撶偣杞鎹㈡垚涓轰竴涓绾挎у簭鍒楁潵琛ㄧず銆
璁綥銆丏銆丷鍒嗗埆琛ㄧず阆嶅巻宸﹀瓙镙戙佽块梾镙圭粨镣瑰拰阆嶅巻鍙冲瓙镙戯纴 鍒椤逛竴妫典簩鍙夋爲镄勯亶铡嗘湁涓夌嶆儏鍐碉细DLR锛堢О涓哄厛镙规″簭阆嶅巻锛夛纴LDR锛堢О涓轰腑镙规″簭阆嶅巻锛夛纴LRD 锛堢О涓哄悗镙规″簭阆嶅巻锛夈
(1)鍏埚簭阆嶅巻
璁块梾镙癸绂鎸夊厛搴忛亶铡嗗乏瀛愭爲锛涙寜鍏埚簭阆嶅巻鍙冲瓙镙
(2)涓搴忛亶铡
鎸変腑搴忛亶铡嗗乏瀛愭爲锛涜块梾镙癸绂鎸変腑搴忛亶铡嗗彸瀛愭爲
(3)钖庡簭阆嶅巻
鎸夊悗搴忛亶铡嗗乏瀛愭爲锛涙寜钖庡簭阆嶅巻鍙冲瓙镙戯绂璁块梾镙
❺ C语言中的树和图有什么用
在程序设计当中,树和图是两种常见的数据结构,在计算机技术应用十分广泛,他们也是两种思考问题的方式,常用于结局实际问题。树最直观的用途就是如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。在数据库系统中,树型结构也是信息的重要组织形式之一,一切具有层次关系的问题都可用树来描述。数据结构的图就是实际情况的抽象,即逻辑模型,然后通过计算机编程来解决问题。比如一个很复杂的地图,有很多城市,有很多路,如何找出最短路径呢?当然是用计算机来算了,就得用图来表示等等。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:
a.集合
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
b.线性结构
数据结构中的元素存在一对一的相互关系;
c.树形结构
数据结构中的元素存在一对多的相互关系;
d.图形结构
数据结构中的元素存在多对多的相互关系。
❻ c璇瑷锛屼簩鍙夋爲姹傝В锝
鍏堣冭槛搴︿负2镄勭粨镣癸纴绗涓灞1涓锛岀浜屽眰2涓锛岀涓夊眰4涓锛岀锲涘眰8涓锛岀浜斿眰8涓锛屽叡23涓銆
铹跺悗绗5灞傝缮链8涓绌轰綅锛屽厛锅囱句负鍙跺瓙鑺傜偣锛屽嵆搴︿负0銆傜浜斿眰婊★纴鐩鍓嶆诲叡31涓缁撶偣銆
铹跺悗绗浜斿眰镄8涓搴︿负2镄勭粨镣瑰彲浠ュ紩鐢冲嚭16涓鍙跺瓙缁撶偣锛屾诲叡47涓锛屼互婊¤冻棰樻剰锛屽亣璁炬垚绔嬨
鏁6灞伞
褰撶劧姣旇缉绠鍗旷殑棰樼敾锲句细寰埚ソ瑙c