【教学】第6章 树和二叉树ppt课件_第1页
【教学】第6章 树和二叉树ppt课件_第2页
【教学】第6章 树和二叉树ppt课件_第3页
【教学】第6章 树和二叉树ppt课件_第4页
【教学】第6章 树和二叉树ppt课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6 6章章 树和二叉树树和二叉树 树是一类重要的非线性数据构造,树是一类重要的非线性数据构造,是以分支关系定义的层次构造是以分支关系定义的层次构造6.1 6.1 树的定义树的定义定义:树定义:树(tree)(tree)是是n(nn(n0)0)个结点的有限集个结点的有限集T T其中:有且仅有一个特定的结点,称为树其中:有且仅有一个特定的结点,称为树的根的根(root)(root)当当n1n1时,其他结点可分为时,其他结点可分为m(m0)m(m0)个互不相个互不相交的有限集交的有限集T1,T2,TmT1,T2,Tm,其中每一个集,其中每一个集合本身又是一棵树,称为根的子树合本身又是一棵树,称为

2、根的子树(subtree)(subtree)特点:特点:树中至少有一个结点称为根树中至少有一个结点称为根树中各子树是互不相交的集合树中各子树是互不相交的集合A只需一个根结点的树只需一个根结点的树ABCDEFGHIJKLMA为根结点,其他分为三个互不相交的子集为根结点,其他分为三个互不相交的子集T1=B,E,F,K,L T2=C,G T3=D,H,I,J,MT1,T2,T3都是根结点都是根结点A的子树,且本身又是一棵树。的子树,且本身又是一棵树。根根本术语根本术语结点结点(node):包括一个数据元素及假设干指向其子树:包括一个数据元素及假设干指向其子树的分支的分支结点的度结点的度(degree

3、):结点拥有的子树个数:结点拥有的子树个数叶子叶子(leaf):度为:度为0的结点或称终端结点的结点或称终端结点分支结点非终端结点:度不为分支结点非终端结点:度不为0的结点的结点树的度:树内各结点的度的最大值树的度:树内各结点的度的最大值孩子孩子(child):结点的子树的根称为该结点的孩子:结点的子树的根称为该结点的孩子双亲双亲(parents): (相对孩子相对孩子)结点的上层结点结点的上层结点兄弟兄弟(sibling):同一双亲的孩子之间互称兄弟:同一双亲的孩子之间互称兄弟结点的祖先:从根到该结点所经分支上的一切结点结点的祖先:从根到该结点所经分支上的一切结点子孙:某结点为根的子树中的恣

4、意结点子孙:某结点为根的子树中的恣意结点结点的层次结点的层次(level):从根结点算起,根为第一层,它:从根结点算起,根为第一层,它的孩子为第二层的孩子为第二层深度深度(depth):树中结点的最大层次数:树中结点的最大层次数森林森林(forest):m(m0)棵互不相交的树的集合棵互不相交的树的集合ADT Tree 数据对象数据对象D:D是具有一样特性的数据元素的集合。是具有一样特性的数据元素的集合。数据关系数据关系R:假设:假设D为空集,那么称为空树;为空集,那么称为空树; 假设假设D仅含一个数据元素,那么仅含一个数据元素,那么R为空集,否那么为空集,否那么RH, H是如下二元关系:是如

5、下二元关系:(1)在在D中存在独一的称为根的数据元素中存在独一的称为根的数据元素root,它在关系,它在关系H下下无前驱;无前驱; (2)假设假设Droot,那么存在,那么存在Droot的一个划分的一个划分 D1,D2,Dmm0,对恣意,对恣意j k(1j, km) 有有Dj Dk = ,且对恣意的且对恣意的i(1im),独一存在数据元素,独一存在数据元素Xi Di,有有root, Xi H;(3) 对应于对应于D-root的划分的划分,H-有独有独一的一个划分一的一个划分H1,H2,Hm(m0),对恣意对恣意jk(1j, km) 有有Hj Hk = ,且对恣意且对恣意i(1im),Hi是是

6、Di上的二元关上的二元关系,系,Di,Hi是一棵符合本定义的树,称为根是一棵符合本定义的树,称为根root的的子树。子树。根本操作根本操作P P:InitTree ( &T ) ;InitTree ( &T ) ;DestroyTree ( &T ) ;DestroyTree ( &T ) ;CreateTree ( &T , definition ) ;CreateTree ( &T , definition ) ;ClearTree ( &T ) ;ClearTree ( &T ) ;TreeEmpty ( T ) ;Tree

7、Empty ( T ) ;TreeDepth ( T ) ;TreeDepth ( T ) ;Root ( T ) ;Root ( T ) ;Value ( T , cur_e ) ;Value ( T , cur_e ) ;Assign ( T , cur_e , value ) ;Assign ( T , cur_e , value ) ;Parent ( T , cur_e ) ;Parent ( T , cur_e ) ;LeftChild ( T , cur_e ) ;LeftChild ( T , cur_e ) ;RightSibling ( T , cur_e ) ;Right

8、Sibling ( T , cur_e ) ;InsertChild ( &T , &p , i , c ) ;InsertChild ( &T , &p , i , c ) ;DeleteChild ( &T , &p , i ) ;DeleteChild ( &T , &p , i ) ;TraverseTree ( T , Visit ( ) ) ;TraverseTree ( T , Visit ( ) ) ; ADT Tree ADT Tree6.2 6.2 二叉树二叉树一、定义一、定义二叉树是二叉树是n(nn(n0)0

9、)个结点的有限集,它或为空树个结点的有限集,它或为空树(n=0)(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成相交的二叉树构成特点特点每个结点至多有二棵子树每个结点至多有二棵子树( (即不存在度大于即不存在度大于2 2的结点的结点) )二叉树的子树有左、右之分,且其次序不能恣意颠倒二叉树的子树有左、右之分,且其次序不能恣意颠倒根本形状根本形状AABABABCADT BinaryTree数据对象数据对象D:D是具有一样特性的数据元素的集合。是具有一样特性的数据元素的集合。数据关系数据关系R:假设假设D,那么,那么R,称

10、,称BinaryTree为空二叉树;为空二叉树;假设假设D,那么,那么RH,H是如下二元关系;是如下二元关系;(1) 在在D中存在独一的称为根的数据元素中存在独一的称为根的数据元素root,它在关系,它在关系H下下无前驱;无前驱;(2) 假设假设D-root,那么存在那么存在D-rootDl,Dr,且且DlDr ;(3) 假设假设Dl ,那么,那么Dl中存在独一的元素中存在独一的元素Xl,H,且存在且存在Dl上的关系上的关系HlH;假设;假设Dr,那么,那么Dr中存在独中存在独一的元素一的元素Xr,H , 且存在且存在Dr上的关系上的关系HrH; H,, Hl, Hr ;(4) (Dl, Hl

11、)是一棵符合本定义的二叉树是一棵符合本定义的二叉树,称为根的左子树称为根的左子树 (Dr,Hr)是一棵符合本定义的二叉树是一棵符合本定义的二叉树,称为根的右子树称为根的右子树根本操作根本操作P:InitBiTree ( &T ) ;DestroyBiTree ( &T )CreateBiTree ( &T , definition ) ;ClearBiTree ( &T ) ;BiTreeEmpty ( T ) ;BiTreeDepth ( T ) ;Root ( T ) ;Value ( T , e ) ;Assign ( T , &e , value

12、 ) ;Parent ( T , e ) ;LeftChild ( T , e ) ;RightChild ( T , e ) ;LeftSibling ( T , e ) ;RightSibling ( T , e ) ;InsertChild ( T , p , LR , c ) ;DeleteChild ( T , p , LR ) ;PreOrderTraverse ( T , Visit ( ) ) ;InOrderTraverse ( T , Visit ( ) ) ;PostOrderTraverse ( T , Visit ( ) ) ;LevelOrderTraverse (

13、 T , Visit ( ) ) ;ADT BinaryTree二、二叉树的性质二、二叉树的性质性质性质1:在二叉树的第:在二叉树的第i层上至多有层上至多有2i-1个结点个结点(i1)证明:用归纳法证明证明:用归纳法证明 i=1时时,只需一个根结点只需一个根结点, 2i-1= 20=1 是对的是对的 假设对一切假设对一切j(1ji)命题成立,即第命题成立,即第j层上至多有层上至多有 2j-1 个结点个结点 那么,第那么,第i-1层至多有层至多有2i-2 个结点个结点 又二叉树每个结点的度至多为又二叉树每个结点的度至多为2 第第i层上最大结点数是第层上最大结点数是第i-1层的层的2倍,即倍,即2

14、x2i-2= 2i-1 故命题得证故命题得证性质性质2:深度为:深度为k的二叉树至多有的二叉树至多有2k -1个结点个结点(k1)证明:由性质证明:由性质1知深度为知深度为k 的二叉树最大结点数为的二叉树最大结点数为 k k (第第i层上的最大结点数层上的最大结点数)= 2i-1= 2k 1 i=1 i=1性质性质3:对任何一棵二叉树:对任何一棵二叉树T,假设其终端结点数为,假设其终端结点数为n0,度,度 为为2的结点数为的结点数为n2,那么,那么 n0=n2+1证明:设证明:设n1为二叉树为二叉树T中度为中度为1的结点数的结点数 由于:二叉树中一切结点的度均小于或等于由于:二叉树中一切结点的

15、度均小于或等于2 所以:其结点总数所以:其结点总数n=n0+n1+n2 又二叉树中,除根结点外,其他结点都只需一个又二叉树中,除根结点外,其他结点都只需一个 分支进入分支进入 设设B为分支总数,那么为分支总数,那么n=B+1 又:分支由度为又:分支由度为1和度为和度为2的结点射出,的结点射出,B=n1+2n2 于是,于是,n=B+1=n1+2n2+1=n0+n1+n2 n0=n2+1两种特殊方式的二叉树两种特殊方式的二叉树满二叉树满二叉树定义:一棵深度为定义:一棵深度为k且有且有2k-1个结点的二叉树称为满二叉树个结点的二叉树称为满二叉树特点:每一层上的结点数都是最大结点数特点:每一层上的结点

16、数都是最大结点数1231145891213671014151234567两种特殊方式的二叉树两种特殊方式的二叉树完全二叉树完全二叉树定义:深度为定义:深度为k,有,有n个结点的二叉树当且仅当其每一个结个结点的二叉树当且仅当其每一个结 点都与深度为点都与深度为k的满二叉树中编号从的满二叉树中编号从1至至n的结点一一的结点一一 对应时,称为完全二叉树对应时,称为完全二叉树特点:叶子结点只能够在层次最大的两层上出现特点:叶子结点只能够在层次最大的两层上出现对任一结点,假设其右分支下子孙的最大层次为对任一结点,假设其右分支下子孙的最大层次为l,那么其,那么其左分支下子孙的最大层次必为左分支下子孙的最大

17、层次必为l 或或l+1123114589126710123456性质性质4:具有:具有n个结点的完全二叉树的深度为个结点的完全二叉树的深度为log2n +1证明:设深度为证明:设深度为k k,根据性质,根据性质2 2和完全二叉树的定义有和完全二叉树的定义有 2k-1 -1 n 2k-1 -1 n 2k-1 2k-1或或 2k-1 n 2k于是于是 k-1 log2n 1, 那么其双亲是那么其双亲是i/2 (2) 假设假设2in,那么结点,那么结点i无左孩子;假设无左孩子;假设2in,那么其左,那么其左孩子是孩子是2i (3) 假设假设2i+1n,那么结点,那么结点i无右孩子;假设无右孩子;假设

18、2i+1n,那么,那么其右孩子是其右孩子是2i+1123114589126710三、二叉树的存储构造三、二叉树的存储构造1、顺序存储构造、顺序存储构造 二叉树的顺序存储表示二叉树的顺序存储表示 #define MAX_TREE_SIZE 100 typedef TElemType SqBiTree MAX_TREE_SIZE ; SqBiTree bt ; abckdehilfgj例如:例如: bt0 1 2 3 4 5 6 7 8 9 10 11 12 abcdefghijklabcgdef bt0 1 2 3 4 5 6 7 8 9 10 11 12 abcdefgabcdefg顺序存储构

19、造的特点:顺序存储构造的特点:结点间关系蕴含在其存储位置中结点间关系蕴含在其存储位置中浪费空间,适于存满二叉树和完全二叉树浪费空间,适于存满二叉树和完全二叉树2 2、链式存储构造、链式存储构造dataPARENTLCHILDRCHILDlchilddataparentrchild含有三个指针域的结点构造含有三个指针域的结点构造lchilddatarchild含有两个指针域的结点构造含有两个指针域的结点构造ABFGDECABCDEFG二叉链表A BCDEFG三叉链表二叉树的二叉链表存储表示二叉树的二叉链表存储表示typedef struct BiTNode TElemType data;stru

20、ct BiTNode * lchild , * rchild ; BiTNode , * BiTree ;特点:特点: 指针直接表示关系,操作简单指针直接表示关系,操作简单 添加指针域,浪费空间,特别是存在多个空指针域添加指针域,浪费空间,特别是存在多个空指针域6.3 6.3 遍历二叉树和线索二叉树遍历二叉树和线索二叉树一、遍历二叉树一、遍历二叉树 遍历二叉树遍历二叉树(Traversing Binary Tree):(Traversing Binary Tree):按某条搜索途径按某条搜索途径巡访树的每个结点,且使每个顶点仅被访问一次,从而得巡访树的每个结点,且使每个顶点仅被访问一次,从而得

21、到树中一切结点的一个线性陈列。到树中一切结点的一个线性陈列。由二叉树的递归定义可知:由二叉树的递归定义可知: 二叉树是由三个根本单元组成:二叉树是由三个根本单元组成: 根结点、左子树、右子树根结点、左子树、右子树DLR那么可得到六种遍历方案:那么可得到六种遍历方案: DLR DLR、LDRLDR、LRDLRD、DRLDRL、RDLRDL、RLDRLD先序遍历先序遍历(DLR)(DLR):先访问根结点:先访问根结点, ,然后分别先序遍历左子树、然后分别先序遍历左子树、 右子树右子树中序遍历中序遍历(LDR)(LDR):先中序遍历左子树,然后访问根结点,最:先中序遍历左子树,然后访问根结点,最 后

22、中序遍历右子树后中序遍历右子树后序遍历后序遍历(LRD)(LRD):先后序遍历左、右子树,然后访问根结点:先后序遍历左、右子树,然后访问根结点先序遍历二叉树的操作定义为:先序遍历二叉树的操作定义为:假设二叉树为空,那么空操作;否假设二叉树为空,那么空操作;否那么那么1 1访问根结点访问根结点2 2先序遍历左子树先序遍历左子树3 3先序遍历右子树先序遍历右子树中序遍历二叉树的操作定义为:中序遍历二叉树的操作定义为:假设二叉树为空,那么空操作;否那假设二叉树为空,那么空操作;否那么么1 1中序遍历左子树中序遍历左子树2 2访问根结点访问根结点3 3中序遍历右子树中序遍历右子树后序遍历二叉树的操作定

23、义为:后序遍历二叉树的操作定义为:假设二叉树为空,那么空操作;否那么假设二叉树为空,那么空操作;否那么1 1后序遍历左子树后序遍历左子树2 2后序遍历右子树后序遍历右子树3 3访问根结点访问根结点例:例:ABCGDEF先序序列:先序序列:ABDFEGC中序序列:中序序列:DBFGEAC后序序列:后序序列:DFGBECA先序遍历二叉树的递归算法先序遍历二叉树的递归算法Status PreOrderTraverse ( BiTree T , Status(Status PreOrderTraverse ( BiTree T , Status(* * Visit)(TElemType e) )Vis

24、it)(TElemType e) ) if ifT T if ( Visit ( T-data ) ) if ( Visit ( T-data ) ) if ( PreOrderTraverse ( T-lchild , if ( PreOrderTraverse ( T-lchild , Visit ) )Visit ) ) if ( PreOrderTraverse ( T-rchild , if ( PreOrderTraverse ( T-rchild , Visit ) ) return OK ;Visit ) ) return OK ; return ERROR ; return

25、ERROR ; else return OK ; else return OK ; Status PreOrderTraverse ( BiTree T ) ifT Visit ( T-data ) ; PreOrderTraverse ( T-lchild ) ; PreOrderTraverse ( T-rchild ) ; 中序遍历算法中序遍历算法Status InOrderTraverse ( BiTree T ) ifT InOrderTraverse ( T-lchild ) ; Visit ( T-data ) ; InOrderTraverse ( T-rchild ) ; 后

26、序遍历算法后序遍历算法Status PostOrderTraverse ( BiTree T ) ifT PostOrderTraverse ( T-lchild ) ; PostOrderTraverse ( T-rchild ) ; Visit ( T-data ) ; 遍历过程演示:遍历过程演示:-*cab-*cabbt-*bac先序序列:先序序列:- * a b c遍历过程演示:遍历过程演示:-*cab-*cabbt-*bac先序序列:先序序列:- * a b ca*b-c中序序列:中序序列:a * b - c遍历过程演示:遍历过程演示:-*cab-*cabbt-*bac先序序列:先序

27、序列:- * a b ca*b-c中序序列:中序序列:a * b - cab*c-中序序列:中序序列:a b * c -中序遍历的非递归算法中序遍历的非递归算法Status InOrderTraverse ( BiTree T , Status(* Visit)(TElemType e) ) InitStack ( S ) ; Push ( S , T ) ; while ( ! StackEmpty ( S ) ) while ( GetTop ( S , p ) & p ) Push ( S , p - lchild ) ; Pop ( S , p ) ; if ( ! Stack

28、Empty ( S ) ) Pop ( S , p ) ; if ( ! Visit ( p-data ) ) return ERROR ; Push ( S , p-rchild ) ; return OK;中序遍历的非递归算法中序遍历的非递归算法Status InOrderTraverse ( BiTree T , Status(* Visit)(TElemType e) ) InitStack ( S ) ; p = T ; while ( p | ! StackEmpty ( S ) ) if ( p ) Push ( S , p ) ; p = p - lchild ; else P

29、op ( S , p ) ; if ( ! Visit ( p-data ) ) return ERROR ; p = p - rchild ; return OK;按先序次序输入二叉树中结点的值一个字符,空字符按先序次序输入二叉树中结点的值一个字符,空字符表示空树,构造二叉链表表示的二叉树表示空树,构造二叉链表表示的二叉树TStatus CreateBiTree ( BiTree &T ) scanf ( &ch ) ; if ( ch = ) T = NULL ; else if ( ! ( T = ( BiTNode * ) malloc ( sizeof ( BiTNo

30、de ) ) ) ) exit ( OVERFLOW ) ; T - data = ch ; CreateBiTree ( T - lchild ) ; CreateBiTree ( T - rchild ) ; return OK ;6.4 6.4 树与森林树与森林一、树的存储构造一、树的存储构造1 1、双亲表示法、双亲表示法用构造数组存放树的结点,每个结点含两个域:用构造数组存放树的结点,每个结点含两个域:数据域:存放结点本身信息数据域:存放结点本身信息双亲域:指示本结点的双亲结点在数组中位置双亲域:指示本结点的双亲结点在数组中位置 特点特点: : 找双亲容易,找孩子难找双亲容易,找孩子难

31、ABCHDEIFGA-1B0C0D1E1F2G4H4I4012345678data parent树的双亲表示树的双亲表示#define MAX_TREE_SIZE 100typedef struct PTNode TElemType data ; int parent ; PTNode ; typedef struct PTNode nodes MAX_TREE_SIZE ;int n ; PTree ;例:求结点例:求结点ti的长子的长子Int FirstChild ( Ptree t , int i ) for ( j= i+1 ; j t.n ; j+ ) if ( t.nodesj.p

32、arent = i ) return ( j ) ; return (-1) ;2 2、孩子表示法、孩子表示法多重链表:每个结点有多个指针域,分别指向其子树多重链表:每个结点有多个指针域,分别指向其子树 的根的根结点同构:结点的指针个数相等,为树的度结点同构:结点的指针个数相等,为树的度d ddatachild1 child2childdu结点不同构:结点指针个数不等,结点不同构:结点指针个数不等,u degree degree为该结点的度为该结点的度d ddatachild1child2childddegree浪费空间操作不便ABCHDEIFG孩子链表表示:孩子链表表示:ABCDEFGHI0

33、1234567813467852data firstchild如何找双亲结点ABCHDEIFG孩子链表表示:孩子链表表示:A-1B0C0D1E1F2G4H4I401234567813467852data parent firstchild树的孩子链表存储表示树的孩子链表存储表示typedef struct CTNode int child; struct CTNode * next ; * ChildPtr ;typedef struct TElemType data ; Childptr firstchild ; CTBox;typedef struct CTBox nodes MAX_TR

34、EE_SIZE ; int n, r; /结点数和根的位置结点数和根的位置 CTree ;3 3、孩子兄弟表示法:、孩子兄弟表示法: -二叉链表表示法二叉链表表示法 用二叉链表作树的存储构造,链表中每个结点的两个指用二叉链表作树的存储构造,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点针域分别指向其第一个孩子结点和下一个兄弟结点typedef struct CSNode typedef struct CSNode ElemType data; ElemType data; struct CSNode struct CSNode * * firstchild , firstc

35、hild , * * nextsibling ; nextsibling ; CSNode , CSNode , * *CSTree ; CSTree ; firstchilddatanextsibling例:例:ABCHDEIFGA B C D E F G H I 二、森林与二叉树的转换二、森林与二叉树的转换 借助于二叉链表存储构造实现树与二叉树的转换借助于二叉链表存储构造实现树与二叉树的转换ACBED树树 A B C D E ABCDE二叉树 A B C D E A B C D E 存储存储解释解释存储存储解释解释加线:在兄弟之间加一连线删线:对每个结点,除了其长子孩子外,去除其与其他 孩

36、子之间的关系旋转:以树的根结点为轴心,将整树顺时针旋转ABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHI树转换成的二叉树其右子树一定为空树转换成的二叉树其右子树一定为空将树转换成二叉树 从树与二叉树的转换可知:任何一棵和树对应的二叉从树与二叉树的转换可知:任何一棵和树对应的二叉树,其右子树必为空,假设把森林中第二棵树的根结点看树,其右子树必为空,假设把森林中第二棵树的根结点看成是第一棵树根结点的兄弟,那么可导出森林和二叉树的成是第一棵树根结点的兄弟,那么可导出森林和二叉树的对应关系。对应关系。森林转换成二叉树森林转换成二叉树假设假设F T1,T2,Tm是

37、森林,那么可按如下规那是森林,那么可按如下规那么转换成一棵二叉树么转换成一棵二叉树B root , LB , RB 。1假设假设F为空,即为空,即m0,那么,那么B为空树为空树2假设假设F非空,即非空,即m0,那么,那么B的根的根root即为森林中第即为森林中第一棵树的根一棵树的根ROOTT1;B的左子树的左子树LB是从是从T1中根结点中根结点的子树森林的子树森林F1T11,T12,T1m1转换而成的二叉转换而成的二叉树;其右子树树;其右子树RB是从森林是从森林F=T2,T3,Tm转换而转换而成的二叉树。成的二叉树。二叉树转换成森林二叉树转换成森林假设假设B root , LB , RB 是一棵二叉树,那么可按如下是一棵二叉树,那么可按如下规那么转换成森林规那么转换成森林FT1,T2,Tm;1假设假设B为空,那么为空,那么F为空;为空;2假设假设B非空,那么非空,那么F中第一棵树中第一棵树T1的根的根ROOTT1即为二叉树即为二叉树B的根的根root;T1中根结点的子树森林中根结点的子树森林F1是由是由B的左子树的左子树LB转换而成的森林;转换而成的森林;F中除中除T1之外其他树组成的之外其他树组成的森林森林F=T2,T3,Tm是由是由

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论