題目要求
編寫乙個c程式,要求在c程式圖形介面下動態模擬顯示二叉樹的先序建立過程。
題目分析
為了動態地顯示二叉樹的先序建立過程,首先要在記憶體中生成一棵真正的二叉樹,然後對二叉樹進行先序遍歷,每遍歷到乙個結點就將該結點的內容輸出到介面上,列印出乙個結點的圖案。在遍歷二叉樹的過程中,要根據二叉樹的結點所在該二叉樹中的位置的不同,設定圖形介面中對應結點的圖案的位置。另外,還有結點之間的線。
程式如下:
#include"stdio.h"
#include
#include
typedef
struct bitnodebitnode,*bitree;
creatbitree(bitree *t)
} printtree(bitree t,int x,int y)
; if(t)
if(printtree(t->lchild,x-(200-y),y+20))
line(x,y,x+(200-y),y+20);
if(printtree(t->child,x-(200-y),y+20))
line(x,y,x+(200-y),y+20);
return
1; }
return
0;
}main()
演算法分析:
circle()的功能是畫乙個以(x,y)圓心,e為半徑的圓
settextstyle()的功能是設定輸出字元的大小,字型等。
outtextxy()的功能是在螢幕的(x,y)的座標位置上輸出結點中包含的字元
sleep()的功能是將程式掛起兩秒。
line()作用是畫出結點之間的連線(劃線的條件:根結點和子樹同在)
本程式繪圖規律:畫出根結點->畫出左子樹->畫出根結點與左子樹間的連線->畫出右子樹->畫出根結點與右子樹連線。
注意:本程式在 tubro c 下才可執行,因為**中包含了tubro c 中的圖形函式庫。
建立二叉樹 後序建立二叉樹
由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...
建立二叉樹
今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...
建立二叉樹
二叉樹在結構上不依賴組織鍊錶 指路法通過根節點與目標節點的相對位置進行定位 define bt left 0 define bt right 1 typedef unsigned long long btpos 結點指標域定義 typedef struct tag btressnode btress...