データ構造 - バイナリストレージ構造

シーケンシャルストレージ表現

データ記憶装置は、例えば、整数です。

// 二叉树的最大节点数
# define MAX_TREE_SIZE 100
//0号单元存储根节点
typedef int SqBiTree[MAX_TREE_SIZE];
SqBiTree bt;

次のように論理的バイナリツリー構造は以下の通りであります:

ここに画像を挿入説明

これは、順次、次の構造を格納します。

ここに画像を挿入説明

バイナリツリーとして必ずしも完全2分木ではないので、私は、あなたは木の仮想ノードを追加する必要があり、親や兄弟を訪問することを願って、子ノード番号。ストレージ構造の上記の欠点から、そうするために見ることができる収納スペースの多くが無駄になっていることです。

だから、チェーンを格納するためのバイナリツリー構造は一般的です。

チェーン店

バイナリリスト

論理構造:

ここに画像を挿入説明

ノード構造:

ここに画像を挿入説明

三叉リスト

論理構造:

ここに画像を挿入説明

ノード構造:

ここに画像を挿入説明


バイナリツリーが含む場合は n個 n個 のノードが、それは内のバイナリリストを指定する必要があります 2 n個 2N ポインタドメイン必見 n個 + 1 nは1 空の鎖ドメイン。

証明:

枝の数 n個 - 1 N - 1 、即ち、空でない鎖ドメインが存在します n個 - 1 N-1 番目は、それが空の鎖ドメインと等しいです 2 n個 - n個 - 1 = n個 + 1 2N - (N-1)= N + 1 のGe。

おすすめ

転載: blog.csdn.net/hjc256/article/details/94281054