[データ構造-ツリーとバイナリツリー]
目次:
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; //二叉树结点