[データ構造-ツリーとバイナリツリー]

[データ構造-ツリーとバイナリツリー]

1.ツリーとバイナリツリーの定義

(1)ツリーの定義

ツリーはn個のノードの有限のセットであり、空のツリー(n = 0)または空でないツリーのいずれかです。
ここに写真の説明を挿入

(2)基本的な用語

ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入

(3)バイナリツリーの定義

1.バイナリツリーの定義

バイナリツリーは、n(n> = 0)ノードのコレクションです。空のツリー(n = 0)または空でないツリーのいずれかです。空でないツリーの場合:T
(1)呼び出されるノードは1つだけです。ルートのノード;
(2)ルートノード以外のノードは、Tの左側のサブツリーと右側のサブツリーと呼ばれる2つの分離したサブセットT1とT2、およびT1とT2自体の両方に分割されます。バイナリツリーです。

ここに写真の説明を挿入

2.バイナリツリーの基本的な特性

(1)ノードの次数が2以下;
(2)順序付けされたツリー(サブツリーは左右に分割され、順序を任意に逆にすることはできません)

ここに写真の説明を挿入

第二に、バイナリツリーの性質とストレージ構造

(1)バイナリツリーの性質

ここに写真の説明を挿入
完全なバイナリツリー:深さがKで2のK-1ノードの累乗のバイナリツリー。(機能:各レイヤーはノードでいっぱいです)
ここに写真の説明を挿入

完全なバイナリツリー:各ノードが深さKの完全なバイナリツリーの1からnまでの番号が付けられたノードに対応する場合に限り、深さKおよびnノードのバイナリツリー。

ここに写真の説明を挿入

(2)バイナリツリーのストレージ構造

1.シーケンシャルストレージ構造

成し遂げる:完全なバイナリツリーのノードレベル番号に従って、バイナリツリーのデータ要素が順番に格納されます。
特徴
(1)ノード間の関係はその保存場所に含まれています;
(2)完全なバイナリツリーと完全なバイナリツリーを保存するのに適したスペースの浪費。

ノードi:
親ノード:[i / 2]
左の息子:2i
右の息子:2i + 1

ここに写真の説明を挿入ここに写真の説明を挿入

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

2.チェーンストレージ構造

(1)バイナリリンクリスト

ここに写真の説明を挿入

typedef struct BiNode
{
    
    
	TElemType data;   //数据域
	struct BiNode* lchild, * rchild;   //左右孩子指针
}BiNode,*BiTree;   //二叉树结点
BiTree root;

ここに写真の説明を挿入
nノードのバイナリリンクリストには、n +1個のヌルポインタフィールドがあります

(2)三叉リンクリスト
ここに写真の説明を挿入

typedef struct TriTNode
{
    
    
	TElemType data;   //数据域
	struct TriTNode* lchild,* parent * rchild;   //左右孩子指针
}TriTNode,*TriTree;   //二叉树结点

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/m0_46518461/article/details/109262296