二叉樹的儲存可用順序儲存方式和鏈式儲存方式,其中順序儲存時儲存位址相鄰,空間利用率高,但不易進行元素的增刪等操作。而鏈式儲存方式的元素可隨意存放,但其儲存空間所佔為資料元素和指標所佔空間,儲存空間利用率低。
資料圖如下
完整程式–轉化演算法如下
#include
typedef
char datatype;
//將佇列的節點型別設定為字元型
using
namespace std;
typedef
struct node
btnode,
* bintree;
typedef
struct elem
element;
/*函式宣告*/
element*
createbinarytree
(int n)
;//建立順序結構二叉樹
bintree exchange
(element* ele,
int n)
;//二叉樹線性結構轉為二叉結構
void
preorder
(btnode* p)
;//前序遍歷 (遞迴)
void
inorder
(btnode* p)
;//中序遍歷 (遞迴)
void
postorder
(btnode* p)
;//後續遍歷(遞迴)
intmain()
//建立順序結構二叉樹
element*
createbinarytree
(int n)
return ele;
}//二叉樹線性結構轉為二叉結構
bintree exchange
(element* ele,
int n)
else
if(ele[i]
.lchild !=-1
)//如果當前節點左子樹存在
else
if(ele[i]
.rchild !=-1
)//如果當前節點右子樹存在
else
}return ele[0]
.link;
}//前序遍歷 (遞迴)
void
preorder
(btnode* p)
}//中序遍歷 (遞迴)
void
inorder
(btnode* p)
}//後續遍歷(遞迴)
void
postorder
(btnode* p)
}
資料圖的執行結果
如有問題,歡迎指正。
相關參考資料《資料結構》—周顏軍
關於二叉樹的順序儲存和鏈式儲存
出處 3.2.2 二叉樹的順序儲存結構和鏈式儲存結構 1 二叉樹的順序儲存結構 按照順序儲存結構的定義,用一組位址連續的儲存單元以此自上而下 自左至右儲存完全二叉樹上的結點元素,即將完全二叉樹上編號為i的結點元素儲存在如上定義的一維陣列中下標為i 1的分量中。對於一般二叉樹,則應將其每個結點與完全二...
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第 n 個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按 0 開始編號...
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列。陣列轉換成樹即是將陣列中的各個元素按照二叉樹的層次儲存起來的過程。原陣列 1,2,3,4,5,6,7 轉換為順序二叉樹如下圖所示 順序儲存二叉樹的特點 通常只考慮完全二叉樹 第n個元素的左子節點為2 n ...