動態模擬建立二叉樹

2021-08-14 09:01:25 字數 1041 閱讀 2140

題目要求

編寫乙個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...