資料結構 H 鏈式二叉樹

2021-09-22 22:31:31 字數 2411 閱讀 1533

目錄:

分析順序儲存二叉樹的優缺點使用孩子法實現二叉樹

1.二叉樹的順序結構

普通的二叉樹不適合用陣列來儲存,因為可能會造成大量的空間浪費。而完全二叉樹更適合利用順序結構儲存。現實中我們通常把堆(一種二叉樹)使用順序結構的陣列來儲存,需要注意的是這裡的堆操作和作業系統虛擬程序位址空間是兩回事,乙個是資料結構,乙個是作業系統中管理記憶體的一塊區域分段。

2.下面我們來看孩子法實現二叉樹程式:

標頭檔案bintree.h**如下:

#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();

原始檔bintree.c**如下:

#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()

測試**:

#include "bintree.h"

int main()

~bye~ 

資料結構 鏈式二叉樹

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...