資料結構作業-8

來源:互聯網
上載者:User

題目:編寫先序遍曆一般樹的遞迴演算法。設樹的結點結構為孩子兄弟標記法。

1.需求分析

輸入:先序遍曆樹的序列

輸出:先序遍曆樹的序列

 

2.概要設計   

1)        
把一般的樹轉化成二叉樹的孩子兄弟標記法(使用者完成)

2)        
先序遍曆的順序在電腦中建立和儲存這個樹

3)        
程式以先序遍曆的順序訪問樹中每個節點的元素,並呈現給使用者

 

3.詳細設計

4.調試分析

   
更好的方法是以直觀的方式顯示一顆樹,而不是一串字元。

 

5.使用說明

   
以先序遍曆的順序輸入一顆樹,斷行符號,查看遍曆結果。

 

6.測試結果

        
第一組:   

按前序走訪的順序,建立樹(用#代替結束符):ABE#F##CG##D###

A B E

F

C G

D

每一行是一個左枝

        
第二組:

按前序走訪的順序,建立樹(用#代替結束符):ABC####

A B C

每一行是一個左枝

 

7.附錄

來源程式檔案清單。

#include "stdafx.h"<br />#include <iostream></p><p>//用孩子兄弟標記法,定義樹的節點結構<br />typedef struct CSNode<br />{<br />char data;//資料元素的類型為char<br />struct CSNode* firstSon;//指向第一個孩子的指標<br />struct CSNode* nextSibling;//指向下一個兄弟的指標<br />}*CSTree;</p><p>//按照先序遍曆的順序,建立樹<br />CSNode *CreateTree()<br />{<br />CSNode *p;//根節點<br />char dt=getchar();//接收資料<br />if (dt=='#')<br />{<br />return NULL;<br />}<br />else<br />{<br />p=new CSNode();<br />p->data=dt;<br />p->firstSon=CreateTree();<br />p->nextSibling=CreateTree();<br />return p;<br />}<br />}<br />//按照先序遍曆的順序,訪問樹的節點元素<br />void PreOrder(CSTree T)<br />{<br />if (T!=NULL)<br />{<br />printf("%c ",T->data);<br />PreOrder(T->firstSon);<br />printf("/n");<br />PreOrder(T->nextSibling);<br />}<br />}<br />int _tmain(int argc, _TCHAR* argv[])<br />{<br />printf("按前序走訪的順序,建立樹(用#代替結束符):");<br />CSNode *t=CreateTree();<br />PreOrder(t);<br />printf("每一行是一個左枝/n");<br />system("pause");<br />return 0;<br />}<br />

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.