資料結構-完全二叉樹性質小結
性質1:在二叉樹的第i層上至多有
性質2:深度為k的二叉樹至多有
性質3:對於任何一顆二叉樹,若2度的結點數有
性質4:具有n個結點的完全二叉樹的深度必為
性質5:對完全二叉樹,若從上至下、從左至右編號,則編號為i的結點,其左孩子編號必為2i,其右孩子編號必為2i+1;其雙親的編號必為[i/2]
#include#include#include#include#includeusing namespace std;
/**
* 樹的順序儲存結構,一般只用於完全二叉樹,這樣可以避免記憶體浪費
*//** 一維陣列能夠存放的最大結點數*/
#define max_size 1024
/**1、 定義順序樹型別*/
typedef char seqtree[max_size];
/**2、 初始化空二叉樹*/
void initseqtree(seqtree tree);
// 3、建立二叉樹
// 建立完全二叉樹,i為陣列中的下標
void createseqtree(seqtree tree, int i);
// 4、獲取樹的根結點元素
char getseqtreeroot(seqtree tree);
// 5、獲取樹的結點總數
int getseqtreelength(seqtree tree);
// 6、獲得樹的深度
int getseqtreedepth(seqtree tree);
// 測試二叉樹的建立
void testseqtree()
cout << "***************=測試總結點數**********===" << endl;
cout << "總結點數: " << getseqtreelength(tree) << endl;
cout << "當前深度: " << getseqtreedepth(tree) << endl;
}int main()
/**2、 初始化空二叉樹*/
void initseqtree(seqtree tree)
}// 3、建立二叉樹
// 建立完全二叉樹,i為陣列中的下標
void createseqtree(seqtree tree, int i)
tree[i] = ch;
// 當某個結點輸入完畢後,還需要讓使用者輸入左孩子和右孩子
cout << "左孩子結點: ";
createseqtree(tree, 2 * i + 1);
cout << endl;
cout << "右孩子結點: ";
createseqtree(tree, 2 * (i + 1));
}// 4、獲取樹的根結點元素
char getseqtreeroot(seqtree tree)
// 5、獲取樹的結點總數
int getseqtreelength(seqtree tree)
return len;
}// 6、獲得樹的深度
int getseqtreedepth(seqtree tree)
return depth;
}
資料結構 二叉樹 反轉二叉樹
include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...
《資料結構》 二叉樹
二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...
資料結構 二叉樹
1.二叉樹 二叉樹是一種特殊結構的樹,每個節點中最多有兩個子節點,如圖1所示 圖1 二叉樹 在圖1中的二叉樹裡,a c有兩個子節點,b d有乙個子節點。對於二叉樹還有圖2中的以下情況 圖2 二叉樹的特殊情況 在博文中還介紹了滿二叉樹和完全二叉樹還有其他的特殊二叉樹。2.二叉樹的實現 有兩種實現方式,...