建立二叉樹

2021-08-02 06:34:29 字數 1521 閱讀 7711

二叉樹在結構上不依賴組織鍊錶

指路法通過根節點與目標節點的相對位置進行定位

#define bt_left 0

#define bt_right 1

typedef unsigned long long btpos;

結點指標域定義

typedef struct tag_btressnode btressnode;

struct tag_btressnode

;

頭結點定義

typedef struct tag_btree btree;

struct tag_btree

;

資料元素定義:

struct node

定位:

while((count > 0)&&(current !=null))

else if(bit == bt_right)

}

位運算是是實現指路法的基礎

#ifndef btree_h

#define btree_h

#define bt_left 0

#define bt_right 1

typedef void btree;

typedef unsigned long long btpos;

typedef void (btree_printf)(btreenode*);

typedef struct tag_btressnode btressnode;

struct tag_btressnode

; btree* btree_create();

void btree_destroy(btree* tree);

void btree_clear(btree* tree);

int btree_insert(btree* tree,btree* node,btpos pos,int count,int flag);//pos:二進位制表示方向,例如110(左右右)

//flag:標示被替換的結點是插入結點的左子樹還是右子樹

btreenode* btree_delete(btree* tree,btpos pos,int count);

btreenode* btree_get(btree* tree,btpos pos,int count);//count:結點數

btreenode* btree_root(btree* tree);

int btree_height(btree* tree);

int btree_count(btree* tree);

int btree_degree(btree* tree);

void btree_display(btree* tree,btree_printf* pfunc,int gap,char div);

#endif

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

建立二叉樹

今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...

建立二叉樹

開發工具與關鍵技術 2020年5月 27 日 一棵二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩顆分別稱為左子樹和右子樹的 相互不相交的二叉樹組成,每個結點最多只有兩個孩子。二叉樹的順序儲存結構,用一組連續的的儲存單元存放二叉樹中的元素,即按滿二叉樹的形式存放在一維陣列中。由於...