資料結構考研 樹與二叉樹(C語言)

2021-08-21 16:17:37 字數 1279 閱讀 2356

typedef strcture btnode

btnode;

把樹轉換成二叉樹的樣子,進行儲存

typedef

struct btnode

btnode;

a1->child=a2;

a1->sibling=null;

a2->sibling= a3;

a3->sibling=a4;

a4->sibling=null;

// 取a1孩子結點a3:

a1->child->sibling

void preorder(btnode *p)

}// 假設訪問函式visit()已經定義過

// visit(p)則在(1)、(2)、(3)處

// 分別是先序、中序和後序遍歷。

需要建立乙個迴圈佇列

void level(btnode *p)

if(q->rchild!=null) // 如果右子樹不空,則右子樹的根節點入隊

}}}

2.3.1 線索化

通過中序遍歷對二叉樹線索化的遞迴演算法

void inthread(tbtnode *p, tbtnode *&pre)

if(pre!=null&&pre->rchild==null)

/* 建立前驅結點的後繼線索 */

pre=p;

//pre指向當前的p,作為p將要指向的下乙個結點的前驅結點指示指標

p=p->rchild;

//p指向乙個新結點,此時pre 和p分別指向的結點形成了乙個前驅後繼對

inthread(p,pre)

}}

2.3.2 建立中序線索二叉樹

通過中序遍歷建立中序線索二叉樹

void createinthread(tbtnode *root)

}

2.3.3 遍歷中序線索二叉樹

求以p為根的中序線索二叉樹中,中序序列下的第乙個結點

tbtnode *first(tbtnode *p)

求在中序線索二叉樹中,結點p在中序下的後繼結點
tbtnode *next(tbtnode *p)

遍歷中序線索二叉樹
void inorder(tbtnode *root)

資料結構 樹與二叉樹 (C )

一.樹的基本概念 樹 tree 是n n 0 個結點的有限集。它有唯一的根 1結點 和若干顆互不相交的子樹 如圖上子樹5 11 12等 組成。接下來以上面樹為例子介紹樹的基本術語。二.樹的儲存結構 順序儲存結構 假設以一組連續空間儲存數的結點,同時在每個結點中,附設乙個指示器指示其雙親結點到鍊錶中的...

c 列印二叉樹 考研資料結構演算法之二叉樹

查詢二叉樹值為x的結點。查詢二叉樹中值為x的結點 求二叉樹的高度 int 列印二叉樹 void 輸出葉子結點 void 先序遍歷非遞迴演算法 演算法思想1 二叉樹的層次遍歷 層次遍歷 編寫在以bst為樹根指標的二叉搜尋樹上進行查詢值為item的結點的非遞迴演算法,若查詢成功能則由item帶回整個結點...

C語言 資料結構 二叉樹

一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...