遞迴實現:
建立求樹高
求葉子數
求節點數
統計度為2的結點個數
後序輸出 先序輸出 中序輸出
交換左右子樹
#include
#include
#include
#define true 1
#define false 0
#define ok 1
#define error 0
#define overflow -1
#define null 0
typedef
int status;
// 二叉樹儲存結構定義
// 二叉鍊錶儲存結構
typedef
int telemtype;
typedef
struct bitnodebitnode,
*bitree;
// 建立二叉樹
// 輸入0 代表建立空樹
// 遞迴建立
// 遞迴邊界:建立空樹
// 遞迴關係:建立非空樹,先建立根節點(輸入數值),再建立左子樹,最後建立右子樹
status createbitree
(bitree& t)
return ok;
}// 求樹高
// 如果是空樹,返回0
// 遞迴求樹高
// 遞迴邊界:當前樹為空
// 遞迴關係:返回當前節點 左右子樹中更高的+1 (根節點)
intgetdepthofbitree
(bitree t)
}// 求葉子節點數
// 如果是空樹 返回0
// 遞迴求葉子數
// 遞迴邊界:當前節點左右子樹為空,返回1
// 遞迴關係:左子樹葉子數 + 右子樹葉子數
intleafcount
(bitree t)
// 計算二叉樹中的節點個數
// 如果是空樹 返回0
// 遞迴求節點數
// 遞迴邊界:當前樹為空
// 遞迴關係:左子樹結點數 + 右子樹結點數 + 1(根節點)
int nodecountofbitree ( bitree t)
// 統計度為2的結點個數
// 如果樹為空 返回0
// 遞迴求
// 遞迴邊界:樹為空
// 遞迴關係:左右子樹都存在,返回 1+遞迴;乙個或不存在 返回 遞迴
int nodecount ( bitree t)
// 左右子樹交換
// 如果樹為空,直接返回
// 遞迴交換
// 遞迴邊界:樹為空
// 遞迴關係:遞迴交換左右子樹
void
exchangetree
(bitree& t)
}// 後序輸出
// 遞迴邊界:數為空,直接返回
// 遞迴關係:依次遞迴遍歷左子樹、右子樹
void
postorder
(bitree t)
}// 先序輸出
void
preorder
(bitree t)
}// 中序輸出
void
inorder
(bitree t)
}int
main()
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹
目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...
二叉樹,完全二叉樹,滿二叉樹
二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...