數據結構課程設計----二叉樹平衡的判定_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  數據結構與算法</b></p><p><b>  課程設計報告</b></p><p>  課程設計題目: 二叉樹平衡的判定 </p><p>  專業(yè)班級: 信息與計算科學1001班

2、 </p><p><b>  一、摘要:</b></p><p>  基于我們對C語言和數據結構的學習我們有能力編寫處理一些比較基本而又簡單的問題。在我們此題我們的目標就是任意給出一個二叉樹我們判斷是否為平衡的二叉樹。</p><p>  我們在學習計算機語言類的知識時當然要注重理論知識的學習,但是我們要明確我們學習

3、的是計算機語言,由于課程的性質就決定了我們必須將我們在課本中學到的知識在計算機上運行并且自己能編寫一些比較簡單的程序,這才是我們學習計算機語言的最終目的而不是滿足于理解一個理論會算一個題。因而我們將要抓住這樣一個鍛煉的機會</p><p>  所謂平衡二叉樹,它或者是一顆空樹或者是具有下列性質的二叉樹:它的左右子樹都是平衡二叉樹,且左右子樹的深度之差得絕對值不超過1。</p><p>  

4、在我們這個判定任意給定的二叉樹的題中。我們處理這道題的主要的思路是:首先按先序和中序或者按中序和后序的方式將我們所要判斷的二叉樹輸入進入,目的是要得到一個明確的二叉樹的結構準確的判斷二叉樹是否平衡。在我們判斷二叉樹的平衡中我們將分別考慮二叉樹左右子樹的是不是為平衡二叉樹,依次得到左右子樹的深度,判斷左右子樹的平衡性。</p><p>  在我們的設計思路中我們將用到不同的樹的遍歷方式。</p>&l

5、t;p><b>  二、問題重敘:</b></p><p>  平衡二叉樹的判斷,設計要求給定一個先序或者后序的遍歷結果,判斷其是否為二叉樹。</p><p><b>  問題分析:</b></p><p>  在處理二叉樹平衡的判斷的問題中。我們需要將分別考慮二叉樹的左右子樹的平衡問題只要左右子樹確定為平衡二叉樹,

6、而且左右子樹的深度的絕對值之差不大于1,那么我們得到的就是一顆平衡的二叉樹。</p><p>  我們將先通過前序和中序或者中序和后序將所要判斷的二叉樹輸入。建立一個明確的二叉樹在此基礎上判斷二叉樹是否為平衡二叉樹。</p><p>  我們先建立一個二叉樹并用前序和中序或者中序和后序遍歷的方式將我們輸入的樹的元素輸入得到一個明確的樹的結構。</p><p><

7、;b>  三、流程圖如下:</b></p><p><b>  四、模塊分析:</b></p><p>  1、定義一個結構體存儲各節(jié)點的信息,并且用遞歸的方法存儲左右子樹的信息</p><p>  typedef struct BINTREE</p><p><b>  {</b>

8、;</p><p>  char chData;</p><p>  struct BINTREE * pbLChild;</p><p>  struct BINTREE * pbRChild;</p><p>  } BinTree, * pBinTree;</p><p>  2、分別得到樹的深度以及左右子

9、樹的深度</p><p>  int BT_GetTreeDepth( pBinTree pbTree )</p><p><b>  {</b></p><p><b>  //存儲樹總的深度</b></p><p>  int iDepthTotal = 0;</p><p&

10、gt;  //存儲左子樹的深度</p><p>  int iDepthLeft = 0;</p><p>  //存儲右子樹的深度</p><p>  int iDepthRight = 0;</p><p>  if ( pbTree == NULL )</p><p><b>  {</b>

11、</p><p>  iDepthTotal = 0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  // 左孩子的深度</p><

12、p>  iDepthLeft = BT_GetTreeDepth( pbTree->pbLChild );</p><p>  // 右孩子的深度</p><p>  iDepthRight = BT_GetTreeDepth( pbTree->pbRChild );</p><p>  // 去左右孩子深度的最大值,1代表著根節(jié)點 </p

13、><p>  iDepthTotal = 1 + ( iDepthLeft > iDepthRight ? iDepthLeft : iDepthRight );</p><p><b>  }</b></p><p>  return iDepthTotal;</p><p><b>  }</b&g

14、t;</p><p>  3、判斷左右子樹是不是為平衡二叉樹</p><p>  bool BT_IsBalanceTree( pBinTree pbTree )</p><p><b>  {</b></p><p><b>  //如果樹不是空的</b></p><p>

15、  if( pbTree != NULL )</p><p><b>  {</b></p><p>  //存儲左孩子的深度</p><p>  int iLeftDepth = 0;</p><p>  //存儲右孩子的深度</p><p>  int iRightDepth = 0;<

16、/p><p>  //得到左孩子的深度</p><p>  iLeftDepth = BT_GetTreeDepth( pbTree->pbLChild );</p><p>  //得到右孩子的深度</p><p>  iRightDepth = BT_GetTreeDepth( pbTree->pbRChild );</p&

17、gt;<p>  //判斷樹是不是平衡二叉樹 平衡二叉樹的左右孩子的深度絕對值只差不大于</p><p>  if (( iLeftDepth - iRightDepth >= -1 ) && ( iLeftDepth - iRightDepth <= 1 ))</p><p><b>  {</b></p>

18、<p>  // 判斷左子樹是不是平衡的</p><p>  BT_IsBalanceTree( pbTree->pbLChild );</p><p>  //判斷右子樹是不是平衡的</p><p>  BT_IsBalanceTree( pbTree->pbRChild );</p><p><b>  

19、}</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b&g

20、t;</p><p><b>  else</b></p><p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p>  return true;</p><

21、;p><b>  }</b></p><p><b>  4、輸入各節(jié)點元素</b></p><p>  bool BT_PreInToTree( pBinTree & pbTree, char * szInOrder, char * szPreOrder, int iInLeft, int iInRight, int iPreLe

22、ft, int iPreRight )</p><p>  BT_PreInToTree( pbTree->pbLChild, szInOrder, szPreOrder, iInLeft, iCurPos - 1, iPreLeft + 1, iPreLeft + iLegnthLeft );</p><p><b>  5、前序遍歷二叉樹</b></p

23、><p>  void BT_PreOrder( pBinTree pbTree ) </p><p><b>  { </b></p><p>  if ( pbTree != NULL )</p><p><b>  {</b></p><p>  // The preord

24、er traversal is, root, left child, right child</p><p>  printf( "%c ", pbTree->chData ); </p><p>  BT_PreOrder ( pbTree->pbLChild );</p><p>  BT_PreOrder ( pbTree-&g

25、t;pbRChild );</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  6、后序遍歷二叉樹</b></p><p>  void BT_PostOrder( pBinTree pbTree ) </p>

26、;<p><b>  { </b></p><p>  if ( pbTree != NULL )</p><p><b>  {</b></p><p>  // The postorder traversal is, left child, right child, root</p><

27、;p>  BT_PostOrder ( pbTree->pbLChild ) ;</p><p>  BT_PostOrder ( pbTree->pbRChild ) ; </p><p>  printf( "%c ", pbTree->chData );</p><p><b>  } </b>

28、</p><p><b>  }</b></p><p><b>  7、主函數</b></p><p>  void main()</p><p><b>  {</b></p><p>  char szPre [100] = "&quo

29、t;;</p><p>  char szMid [100] = "";</p><p>  char szPost [100] = "";</p><p>  pBinTree pbPreInTree;</p><p>  pBinTree pbPostInTree;</p><

30、;p> ?。?)選用前序和后序的輸出方式,并判斷是不是平衡二叉樹</p><p>  printf("請輸入前序序列:\n");</p><p>  scanf("%s",&szPre);</p><p>  printf( "請輸入中序序列:\n");</p><p>

31、;  scanf("%s",&szMid);</p><p>  bool bCorrect = BT_PreInToTree( pbPreInTree, szMid, szPre, 0, strlen(szMid)-1, 0, strlen(szPre)-1 );</p><p>  if ( bCorrect )</p><p>  

32、{printf("該樹的后序序列為:\n");</p><p>  BT_PostOrder( pbPreInTree );</p><p>  if ( BT_IsBalanceTree( pbPreInTree ))</p><p>  {printf("該樹是平衡二叉樹");</p><p>&l

33、t;b>  }</b></p><p><b>  else</b></p><p>  {printf("這個不是平衡二叉樹");</p><p><b>  }</b></p><p><b>  }</b></p>&l

34、t;p><b>  else</b></p><p>  {printf("不要亂輸,前序與中序不匹配");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b

35、></p><p>  (2)選用中序和后序輸入方式,并判斷是不是平衡二叉樹</p><p>  {printf("請輸入中序序列:\n");</p><p>  scanf("%s",&szMid) ;</p><p>  printf("請輸入后序序列:\n");&

36、lt;/p><p>  scanf("%s",&szPost);</p><p>  bool bCorrect = BT_InPostToTree( pbPostInTree, szMid, szPost, 0, strlen(szMid)-1, 0, strlen(szPost)-1 );</p><p>  if ( bCorrect

37、)</p><p>  {printf( "該樹的前序序列為:\n");</p><p>  BT_PreOrder( pbPostInTree );</p><p>  if ( BT_IsBalanceTree( pbPostInTree ))</p><p>  {printf("該樹是平衡二叉樹"

38、;); </p><p><b>  }</b></p><p><b>  else</b></p><p>  {printf("這個不是平衡二叉樹");</p><p><b>  }</b></p><p><b&g

39、t;  }</b></p><p><b>  else</b></p><p>  {printf("不要亂輸,中序與后序不匹配");</p><p><b>  }</b></p><p><b>  }</b></p><

40、;p><b>  break;</b></p><p><b>  default:</b></p><p>  {printf("不要亂選,不支持其他模式");</p><p><b>  }</b></p><p><b>  }<

41、/b></p><p><b>  }</b></p><p>  五、算法實現效果圖:</p><p><b>  選用輸入方式:</b></p><p><b>  中序</b></p><p><b>  后序輸入</b>

42、;</p><p><b>  得到結果</b></p><p>  5、輸入的中序和后序不匹配</p><p><b>  6、得到正確的結果</b></p><p><b>  六、總結:</b></p><p>  在此次課程設計過程中我們成功的利

43、用樹的遍歷以及二叉樹成立的條件判斷了隨意的二叉樹是為平衡二叉樹。</p><p>  其實在于計算機語言這類課程看重的就是上機的實際操作,不滿足于基本理論的學習。上機操作才能讓我們更加好的掌握我們所要學習的計算機語言知識。</p><p>  我們在此次程序設計中首先分析問題所要的關鍵然后找到題目所涉及的知識點,了解知識的結構在此基礎上選用正確的方法畫出我們解決問題的流程圖。接著我們在流程

44、圖的基礎上編寫代碼將我們所要實現的目的在計算機上實現。</p><p>  我們在解決我們問題的過程中通過前序和中序或者中序和后序的方式將樹輸入,再將其以后序或者前序的方式將其輸出。在判斷是不是為平衡二叉樹時我們分別檢索左右子樹的深度判斷左右子樹是不是平衡二叉樹,并且比較左右子樹的深度,看看它們之間的絕對值之差是不是小于1的。最終得到我們所輸入的二叉樹是不是平衡二叉樹。在我們輸入的過程中為了得到正確的結構,我們所

45、輸入的前序和中序必須是匹配的或者中序和后序是匹配的,只有這樣才能得到一個明確的樹的結構。</p><p><b>  七、心得體會:</b></p><p>  我們的專業(yè)決定了我們跟計算機結緣,這樣我們也就與計算機語言結緣啦。我們將會在以后的學習生涯中不斷學習計算機語言的知識。因而我們要懂得學習計算機語言的正確的方法這是才能事半功倍。</p><

46、p>  上機編程看起來是件很單調很無聊的事情,但是只要我們能夠沉下心來,認真的處理自己需要解決的問題就能從這其中得到無窮的樂趣?。?lt;/p><p><b>  八、參考文獻:</b></p><p>  劉玉龍 數據結構與算法實用教程 電子工業(yè)出版社</p><p>  譚浩強 C語言程序設計 清華大學出版社</p>

47、<p>  嚴蔚敏 數據結構 清華大學出版社</p><p><b>  九、附錄</b></p><p><b>  源程序如下:</b></p><p>  #include<stdio.h></p><p>  #include<malloc.h> &

48、lt;/p><p>  #include<string.h> </p><p>  typedef struct BINTREE</p><p><b>  {</b></p><p>  char chData;</p><p>  struct BINTREE * pbLChil

49、d;</p><p>  struct BINTREE * pbRChild;</p><p>  } BinTree, * pBinTree;</p><p>  int BT_GetTreeDepth( pBinTree pbTree )</p><p><b>  {</b></p><p>

50、;<b>  //存儲樹總的深度</b></p><p>  int iDepthTotal = 0;</p><p>  //存儲左子樹的深度</p><p>  int iDepthLeft = 0;</p><p>  //存儲右子樹的深度</p><p>  int iDepthRight

51、 = 0;</p><p>  if ( pbTree == NULL )</p><p><b>  {</b></p><p>  iDepthTotal = 0;</p><p><b>  }</b></p><p><b>  else</b>

52、</p><p><b>  {</b></p><p>  // Depth of left child 左孩子的深度</p><p>  iDepthLeft = BT_GetTreeDepth( pbTree->pbLChild );</p><p>  // Depth of right child 右

53、孩子的深度</p><p>  iDepthRight = BT_GetTreeDepth( pbTree->pbRChild );</p><p>  // Get the max depth of left and right child, 1 means root node 去左右孩子深度的最大值,1代表著根節(jié)點 </p><p>  iDepthTot

54、al = 1 + ( iDepthLeft > iDepthRight ? iDepthLeft : iDepthRight );</p><p><b>  }</b></p><p>  return iDepthTotal;</p><p><b>  }</b></p><p>  b

55、ool BT_IsBalanceTree( pBinTree pbTree )</p><p><b>  {</b></p><p>  // If tree is not empty 如果樹不是空的</p><p>  if( pbTree != NULL )</p><p><b>  {</b

56、></p><p>  // Store the left child depth 存儲左孩子的深度</p><p>  int iLeftDepth = 0;</p><p>  // Store the right child depth 存儲右孩子的深度</p><p>  int iRightDepth = 0;&

57、lt;/p><p>  // Get the left child depth 得到左孩子的深度</p><p>  iLeftDepth = BT_GetTreeDepth( pbTree->pbLChild );</p><p>  // Get the right child depth 得到右孩子的深度</p>&l

58、t;p>  iRightDepth = BT_GetTreeDepth( pbTree->pbRChild );</p><p>  // Judge the tree is balance tree or not 判斷樹是不是平衡二叉樹 平衡二叉樹的左右孩子的深度絕對值只差不大于1</p><p>  // The balance tree is the abstrac

59、t of left child depth reduce right child depth is equal or less than 1</p><p>  if (( iLeftDepth - iRightDepth >= -1 ) && ( iLeftDepth - iRightDepth <= 1 ))</p><p><b>  {<

60、/b></p><p>  // Judge the left child is balance too 判斷左子樹是不是平衡的</p><p>  BT_IsBalanceTree( pbTree->pbLChild );</p><p>  // Judge the right child is balance too 判斷右子樹是不是平衡的<

61、;/p><p>  BT_IsBalanceTree( pbTree->pbRChild );</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  retur

62、n false;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  return false;&

63、lt;/p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p>  bool BT_PreInToTree( pBinTree & pbTree, char * szInOrder, char * szPreOrd

64、er, int iInLeft, int iInRight, int iPreLeft, int iPreRight )</p><p><b>  {</b></p><p>  // Create node 創(chuàng)建一個節(jié)點</p><p>  pbTree = new BinTree;</p><p> 

65、 pbTree->chData = szPreOrder[iPreLeft];</p><p>  pbTree->pbLChild= pbTree->pbRChild = NULL;</p><p>  // Store current position </p><p>  int iCurPos = iInLeft;</p>

66、<p>  // Find the node the same as pre order 找到先前已經訪問的節(jié)點</p><p>  while (( iCurPos <= iInRight ) && ( szInOrder[iCurPos] != szPreOrder[iPreLeft] ))</p><p><b>  {</b&

67、gt;</p><p>  iCurPos ++;</p><p><b>  }</b></p><p>  // If the current position is greater than the right border, return false</p><p>  if ( iCurPos > iIn

68、Right )</p><p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p>  int iLegnthLeft = iCurPos - iInLeft;</p><p>  // If cur

69、rent position is greater than left, generate left child</p><p>  if ( iCurPos > iInLeft )</p><p><b>  {</b></p><p>  BT_PreInToTree( pbTree->pbLChild, szInOrder, s

70、zPreOrder, iInLeft, iCurPos - 1, iPreLeft + 1, iPreLeft + iLegnthLeft );</p><p><b>  }</b></p><p>  // if current position is less than right, generate right child</p><p&g

71、t;  if ( iCurPos < iInRight )</p><p><b>  {</b></p><p>  BT_PreInToTree( pbTree->pbRChild, szInOrder, szPreOrder, iCurPos + 1, iInRight, iPreLeft + iLegnthLeft + 1, iPreRight )

72、;</p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p>  bool BT_InPostToTree( pBinTree & pbTree, char * szInOrder, char * szPos

73、tOrder, int iInLeft, int iInRight, int iPostLeft, int iPostRight )</p><p><b>  {</b></p><p>  // Create node</p><p>  pbTree = new BinTree;</p><p>  pbTre

74、e->chData = szPostOrder[iPostRight];</p><p>  pbTree->pbLChild = pbTree->pbRChild = NULL;</p><p>  // Store current position</p><p>  int iCurPos = iInLeft;</p><

75、p>  // Find the node the same as post order</p><p>  while ( iCurPos <= iInRight && szInOrder[ iCurPos ] != szPostOrder[ iPostRight ])</p><p><b>  {</b></p><

76、p>  iCurPos++;</p><p><b>  }</b></p><p>  // If the current position is greater than the right border, return false</p><p>  if ( iCurPos > iInRight ) </p>

77、<p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p>  int iLengthLeft = iCurPos - iInLeft;</p><p>  // If the current position i

78、s greater than the left border, generate the left child</p><p>  if ( iCurPos > iInLeft )</p><p><b>  {</b></p><p>  BT_InPostToTree( pbTree->pbLChild, szInOrder,

79、szPostOrder, iInLeft, iCurPos - 1, iPostLeft, iPostLeft + iLengthLeft - 1);</p><p><b>  }</b></p><p>  // If the current position is less than the right border, generate the right ch

80、ild</p><p>  if ( iCurPos < iInRight )</p><p><b>  {</b></p><p>  BT_InPostToTree( pbTree->pbRChild, szInOrder, szPostOrder, iCurPos + 1, iInRight, iPostLeft + iLe

81、ngthLeft, iPostRight - 1);</p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p>  void BT_PreOrder( pBinTree pbTree ) </p>&l

82、t;p><b>  { </b></p><p>  if ( pbTree != NULL )</p><p><b>  {</b></p><p>  // The preorder traversal is, root, left child, right child</p><p>

83、  printf( "%c ", pbTree->chData ); </p><p>  BT_PreOrder ( pbTree->pbLChild );</p><p>  BT_PreOrder ( pbTree->pbRChild );</p><p><b>  } </b></p>

84、<p><b>  }</b></p><p>  void BT_PostOrder( pBinTree pbTree ) </p><p><b>  { </b></p><p>  if ( pbTree != NULL )</p><p><b>  {</b

85、></p><p>  // The postorder traversal is, left child, right child, root</p><p>  BT_PostOrder ( pbTree->pbLChild ) ;</p><p>  BT_PostOrder ( pbTree->pbRChild ) ; </p>

86、<p>  printf( "%c ", pbTree->chData );</p><p><b>  } </b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b&g

87、t;</p><p>  char szPre [100] = "";</p><p>  char szMid [100] = "";</p><p>  char szPost [100] = "";</p><p>  pBinTree pbPreInTree;</

88、p><p>  pBinTree pbPostInTree;</p><p>  int iMode = 0;</p><p>  printf("請選擇生成二叉樹規(guī)則:前序和中序(0),后序和中序(1)\n");</p><p>  scanf("%d",&iMode);</p>

89、<p>  switch ( iMode )</p><p><b>  {</b></p><p><b>  case 0:</b></p><p><b>  {</b></p><p>  printf("請輸入前序序列:\n");<

90、;/p><p>  scanf("%s",&szPre);</p><p>  printf( "請輸入中序序列:\n");</p><p>  scanf("%s",&szMid);</p><p>  bool bCorrect = BT_PreInToTree( p

91、bPreInTree, szMid, szPre, 0, strlen(szMid)-1, 0, strlen(szPre)-1 );</p><p>  if ( bCorrect )</p><p>  {printf("該樹的后序序列為:\n");</p><p>  BT_PostOrder( pbPreInTree );</p&g

92、t;<p>  if ( BT_IsBalanceTree( pbPreInTree ))</p><p>  {printf("該樹是平衡二叉樹");</p><p><b>  }</b></p><p><b>  else</b></p><p>  {pr

93、intf("這個不是平衡二叉樹");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  {printf("不要亂輸,前序與中序不匹配");&l

94、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  {printf("請輸

95、入中序序列:\n");</p><p>  scanf("%s",&szMid) ;</p><p>  printf("請輸入后序序列:\n");</p><p>  scanf("%s",&szPost);</p><p>  bool bCorrect

96、 = BT_InPostToTree( pbPostInTree, szMid, szPost, 0, strlen(szMid)-1, 0, strlen(szPost)-1 );</p><p>  if ( bCorrect )</p><p>  {printf( "該樹的前序序列為:\n");</p><p>  BT_PreOrder

97、( pbPostInTree );</p><p>  if ( BT_IsBalanceTree( pbPostInTree ))</p><p>  {printf("該樹是平衡二叉樹"); </p><p><b>  }</b></p><p><b>  else</b&

98、gt;</p><p>  {printf("這個不是平衡二叉樹");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  {printf(

99、"不要亂輸,中序與后序不匹配");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  default:</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論