二叉树的基本操作(c语言)
二叉樹的基本操作
- 創建二叉樹
- 二叉樹的葉子節點
- 二叉樹的節點總數
- 二叉樹的高度
二叉樹的基本遍歷方法
創建二叉樹
代碼:
// 創建二叉樹,使用# void createBiTree(BiTree& T) { //引用是為了連根節點也更改了char ch;scanf_s("%c", &ch,1);if (ch == '#') // #代表虛擬節點T = NULL; //節點直接置為空else {T = (BiTNode*)malloc(sizeof(BiTNode));T->data = ch ;createBiTree(T->left);createBiTree(T->right);} }二叉樹的葉子節點
遞歸模型:
f(b)={0b==NULL1b?>left==NULL且b?>right=NULLf(b?>left)+f(b?>right)其余情況f(b) = \begin{cases} 0 & b == NULL \\ 1 & b->left ==NULL且 b->right = NULL \\ f(b->left)+f(b->right) & 其余情況\\ \end{cases} f(b)=??????01f(b?>left)+f(b?>right)?b==NULLb?>left==NULL且b?>right=NULL其余情況?
分析:
當二叉樹為空時,葉子結點數為0;當只有一個根節點時,葉子結點數為1;其余情況,葉子節點數 = 左子樹葉子節點數 + 右子樹葉子節點數。
代碼:
/*計算一顆二叉樹中葉子節點的數量*/ int countleaf(BiTree T) {if (T == NULL)return 0;else if (T->left == NULL && T->right == NULL)return 1;elsereturn countleaf(T->left) + countleaf(T->right); }二叉樹的節點總數
遞歸模型:
f(b)={0b==NULL1b?>left==NULL且b?>right=NULLf(b?>left)+f(b?>right)+1其余情況f(b) = \begin{cases} 0 & b == NULL \\ 1 & b->left ==NULL且 b->right = NULL \\ f(b->left)+f(b->right) + 1 & 其余情況\\ \end{cases} f(b)=??????01f(b?>left)+f(b?>right)+1?b==NULLb?>left==NULL且b?>right=NULL其余情況?
分析
當二叉樹為空時,結點數為0;當只有一個根節點時,結點數為1;其余情況,節點總數 = 左子節點總數 + 右子樹節點總數+1。
代碼:
/*計算二叉樹的節點個數*/ int NodeCount(BiTree T) {int num1, num2;if (!T)return 0;else if (!T->left && !T->right)return 1;else {/*num1 = NodeCount(T->left);num2 = NodeCount(T->right);return (num1 + num2 + 1);*/return (NodeCount(T->left) + NodeCount(T->right) + 1);} }二叉樹的高度
分析
當二叉樹為空時,T的深度為0;如果二叉樹不為空,則分別計算其左、右子樹深度,左右子樹的最大深度加1就是該二叉樹的深度
代碼:
總結
以上是生活随笔為你收集整理的二叉树的基本操作(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构----数组与广义表专题
- 下一篇: 二叉树的非递归遍历(统一的模板)