二叉樹規律:
假設根節點的高度為0
二叉樹是每個節點至多只有兩個節點的樹
深度為i所在的層至多有 2^i個節點
高度為k的二叉樹至多有2^(k+1)-1個節點
n0表示度為0的節點, n2表示度為2的節點,存在n0 = n2 + 1
對所有樹有:節點個數 = 邊數+1
完全二叉樹規律
節點數為n的完全二叉樹,其高度為 (向下取整),也就是說該樹一共有logn + 1 層。
對於完全二叉樹,若從上至下、從左至右編號,則編號為i的節點,其左孩子節點編號為2i,右孩子節點編號為2i+1,父親節點為i/2;
相關函式實現
#include
#include
#include
#include
using
namespace std;
typedef
char btdatatype;
typedef
struct binarytreenode
btnode;
// 通過前序遍歷的陣列"abd##e#h##cf##g##"構建二叉樹
btnode*
binarytreecreate
(btdatatype* a,
int n,
int* pi)
return
null;}
// 二叉樹銷毀
void
binarytreedestory
(btnode*
* root)
}// 二叉樹節點個數
intbinarytreesize
(btnode* root)
// 二叉樹葉子節點個數
intbinarytreeleafsize
(btnode* root)
// 二叉樹第k層節點個數
intbinarytreelevelksize
(btnode* root,
int k)
}return-1
;}// 二叉樹查詢值為x的節點
btnode*
binarytreefind
(btnode* root, btdatatype x)
return
null;}
// 二叉樹前序遍歷
void
binarytreeprevorder
(btnode* root)
// 二叉樹中序遍歷
void
binarytreeinorder
(btnode* root)
// 二叉樹後序遍歷
void
binarytreepostorder
(btnode* root)
// 層序遍歷
void
binarytreelevelorder
(btnode* root)}}
// 判斷二叉樹是否是完全二叉樹
intbinarytreecomplete
(btnode* root)
return1;
}int
main()
二叉樹 滿二叉樹和完全二叉樹
二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 2個子結點,樹則無此限制 二叉樹中 結點的子樹 分成左子樹和右子樹,即使某結點只有一棵子樹,也要指明該子樹是左子樹,還是右子樹,就是說 二叉樹是...
二叉樹,完全二叉樹,滿二叉樹
二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...
樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹
目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...