第六章二叉樹和樹結構演算法設計技術

2022-09-06 01:30:12 字數 2316 閱讀 2261

typedef structbnode;

typedef bnode *bitree;//結點指標型別

6.2.1二叉樹遍歷演算法
//先序遍歷

void preorder(bnode *t)

}

6.2.2遍歷演算法的簡單變化

例6.1 設計演算法按先序方式輸出二叉樹葉子節點的值

void preorder(bnode *t)

}// 相關習題

// 設計演算法以中序輸出度為2的結點值

void inorder(bnode *t)

}

例6.2設計演算法求二叉樹t的結點數
void inorder(bnode*t)

}

例6.3求度為2的結點數
void inorder(bnode*t)

}

例6.4設計演算法以後序方式輸出前k個結點
void postorder(bnode *t)

}

例6.5求兩個整數的最大公因子
int hcf(int m,int n)
例6.6利用遞迴求二叉樹結點數
//整數函式形式

int nodes(bnode* t)

例6.7求結點數並賦予引數n
//以引數返回形式

void nodes(bnode *t,int &n)

}

例6.8將結點數累加到n中
void nodes(bnode*t,int &n)

}

例6.9將結點數累加到全程變數n中
void nodes(bnode *t)

}

例6.10將結點數賦給n
void nodes(bnode *t)

}

例6.11求二叉樹的葉子結點資料
int leaf(bnode *t)

}

例6.12求二叉樹的高度
//整數函式形式

int high(bnode *t)+1;

}//帶變參形式

void high(bnode *t,int &h)

}

例6.13釋放所有結點的空間
void postorder(bnode *t)

}

例6.14判斷是否為二叉排序樹
void adj(bnode *t,datatype prev,bool flag)

prev=t->data;

adj(t->rchild,prev,flag);

}}

//孩子兄弟表示法

typedef structtnode;

typedef tnode*tree;

//森林的先序遍歷

void preorder(tnode*t)

}//對一棵樹的完整遍歷

void preorder_tree(tnode*t)

}//直接面向一顆樹的遍歷演算法

void preorder_tree(tnode*t)

}}

例6.15求樹或森林的葉子節點數
int leaf(tnode*t)

return s;

}}

例6.16求樹或森林的高度
int high(tnode*t);

p=p->nextbrother;

return h+1;}}

}

例6.17設計演算法以拓展二叉樹先序作為輸入構建二叉樹
void create_tree(bitree *t)

}

例6.18建立二分查詢的判定樹
void create(bitree &t,int low,int high)

}

例6.19一顆完全二叉樹順序方式儲存在陣列a[1+n]中,設計演算法構造該二叉鍊錶
void create(bitree &t,int i)

}

例6.20用先序pre[n]和中序pin[n]構建二叉鍊錶
void create(bitree &t,int i1,int i2,int k)

}

例6.21將二叉鍊錶按順序存到陣列a中
void trans(bitree &t,int i)

}

第六章 二叉樹

1.基礎知識 二叉樹是一種非線性結構,而前面討論的都是線性結構,兩種是有本質區別的。它在現實社會中存在著很多的模型。例如,人類社會的族譜,社會的各種組織分層,國家,學校,單位的各種機構,這些都是用樹和二叉樹來表示的。其中二叉樹相當的實用。我為什麼這麼說呢,因為二叉樹很有規則性,它的一系列操作都是相當...

第六章 樹和二叉樹

一 基本術語 1 節點 乙個資料元素機器若干指向其子樹的分支。2 節點的度 節點所擁有的子樹的顆樹。3 樹的度 樹中節點度的最大值。二 二叉樹 性質 對任意一棵二叉樹,若其葉子節點數為n0,度為二的節點數為n2,則n0 n2 1 1 滿二叉樹 一顆深度為k且有2的k次方 1個節點的二叉樹為滿二叉樹。...

第六章 數和二叉樹

樹形結構是一種重要的非線性資料結構 6.1樹的定義和基本術語 1.樹是n個節點的有限集 1 有且只有乙個特定的被稱為根的節點 2 n 1時其餘節點可分為m個互不相交的有限集,其中每乙個集合本身又是一棵樹,稱為根的子樹 6.2二叉樹 1.二叉樹是每個節點至多有兩顆子樹 即二叉樹中不存在度大於二的節點 ...