目錄:
分析順序儲存二叉樹的優缺點使用孩子法實現二叉樹
1.二叉樹的順序結構
普通的二叉樹不適合用陣列來儲存,因為可能會造成大量的空間浪費。而完全二叉樹更適合利用順序結構儲存。現實中我們通常把堆(一種二叉樹)使用順序結構的陣列來儲存,需要注意的是這裡的堆操作和作業系統虛擬程序位址空間是兩回事,乙個是資料結構,乙個是作業系統中管理記憶體的一塊區域分段。
2.下面我們來看孩子法實現二叉樹程式:
標頭檔案bintree.h**如下:
原始檔bintree.c**如下:#pragma once
//二叉樹的鏈式儲存方式--孩子表示法
typedef int btdatatype;
typedef struct btnodebtnode;
//獲取二叉樹
btnode* buybintreenode(btdatatype data);
//二叉樹的建立
btnode* _creatbintree(btdatatype* array, int size, int* index, btdatatype invalid);
//重新包裝
btnode* creatbintree(btdatatype* array, int size, btdatatype invalid);
//二叉樹的拷貝(查詢概念)
void* copybintree(btnode* proot);
//前序遍歷
void preorder(btnode* proot);
//中序遍歷
void inorder(btnode* proot);
//後序遍歷
void posorder(btnode* proot);
//獲取二叉樹中第k層結點的個數
void getklevelnodecount(btnode* proot, int k);
//獲取二叉樹中的結點
int getbintreesize(btnode* proot);
//葉子結點個數
int getleafcount(btnode* proot);
//獲取樹的高度
void getbintreeheight(btnode* proot);
//元素在樹中位置的查詢
btnode bintreefind(btnode* proot, btdatatype x);
//銷毀
void destroybintree(btnode** proot);
//測試
void testbintree();
測試**:#include "bintree.h"
#include #include #include #include //獲取二叉樹
btnode* buybintreenode(btdatatype data)
pnewnode->_data = data;
pnewnode->_pleft = null;
pnewnode->_pright = null;
return pnewnode;
}//二叉樹的建立
btnode* _creatbintree(btdatatype* array, int size, int* index, btdatatype invalid)
return proot;
}//重新包裝
btnode* creatbintree(btdatatype* array, int size,btdatatype invalid)
//前序遍歷
void preorder(btnode* proot)
}//中序遍歷
void inorder(btnode* proot)
}//後序遍歷
void posorder(btnode* proot)
}//葉子結點個數
int getleafcount(btnode* proot)
if (null == proot->_pleft && null == proot->_pright)
return getleafcount(proot->_pleft) + getleafcount(proot->_pright);
}//銷毀(後序方法)
void destroybintree(btnode** proot)
}//測試
void testbintree()
~bye~#include "bintree.h"
int main()
資料結構 鏈式二叉樹
include using namespace std typedef struct treenode treenode,treep 初始化二叉樹 void init tree treep root 前序遍歷二叉樹 void pre order treep rt 中序遍歷二叉樹 void mid o...
資料結構 鏈式二叉樹
define error 0 define true 1 define false 0 status是函式的型別,其值是函式結果狀態 如ok等 typedef int status typedef int telementtype ifndef bitree h included define bi...
資料結構 鏈式二叉樹
include iostream using namespace std typedef struct treenode treenode,treep 初始化二叉樹 void init tree treep root 建立二叉樹 void creat tree treep rt 前序遍歷二叉樹 vo...