非線形の階層構造 - 木(バイナリ論理構造)02

論理二分木構造

バイナリツリーは、チェーン構成ストレージを使用する場合、高いストレージ効率でツリーの最も単純な形態であり、したがって特性、貯蔵及び二分木を計算することに焦点を当てます。

質問:どのように木でバイナリツリーを変換するには?
ここに画像を挿入説明

1.バイナリツリーに

変換プロセス:

プラスライン:隣接する全ての兄弟ノード間の接続を追加します。
ラインへ:各非終端ノードに対して、加えて、他の子ノードとの接続を削除することによって、その左端の子ノードへ。
回転:右45°に回転軸にルートノード。
調整:バイナリツリーに編成。
ここに画像を挿入説明

接触時のバイナリツリーにツリーの変更の各ノードどのような?

ディスカッション:プロセスプラスラインを直接増加の撮影ポイントと兄弟に関連して、
ラインの操作は、長男に加えて、リンクを削除することですが、兄弟によって長男、間接的に、すべての子供の情報、前の導入、「木のチェーン店-子の弟表現は」同じ原理です。

2.森は、バイナリツリーに変換され、

変容:それぞれ、森のバイナリツリーに各ツリー。
接続:すべてのバイナリツリーが接続され、その後、バイナリーツリーに編成されるまで、最後のバイナリツリーから、前のバイナリツリーのルートノードの右の子としてバイナリツリーのルートに向けます。
ここに画像を挿入説明

バイナリツリーを復元3.

プラスライン:ノードxは、その親のYの左の子である場合は、子供や孫は、yはラインでアップリンクされている右のノードxとノードを置きます。
ゴーライン:両親のすべての元のバイナリの接続ノードと右の子ノードを削除します。
調整:それは構造化させる得られた二段階の上から木や森を整理します。
ここに画像を挿入説明
ツリーには、接触中、バイナリツリーにどのような変更の各ノードを削減しましたか?

X FGに5.24点を示すように、その子孫の左の子ノード、ビューの原点は、これは、兄弟の左の子であり、Eの子孫である、EFGの子供は、接合ラインを復元するためにBを添加されています子供と点の関係;行を削除するためには、ツリーの元の構造に戻すことができるようにすることを、兄弟間の接続です。

4.関係のバイナリツリーを保存します

一棵树采用孩子兄弟表示法所建立的存储结构,与它所对应的二叉树的二叉链表存储结构是完全相同的,只是两个指针域的名称及解释不同而已,图(c)中,结点 C 是结点 B 的右兄弟,而图(e)中,结点 C 是结点 B 的右孩子。因此,二叉链表的有关处理算法可以很方便地转换为树的孩子兄弟链表的处理算法。
ここに画像を挿入説明

二叉树的概念

1.二叉树的定义

二叉树是n(n≥0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。

说明:二叉树是每个结点最多有两个子树的有序树。二叉树的子树通常称为“左子树”(left subtree)和“右子树”(right subtree)。左、右子树的顺序不能互换。

二叉树与树的区别是什么?

讨论:尽管二叉树与树有许多相似之处,树和二叉树的两个主要差别:
(1)树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
(2)树的结点无左、右之分,而二叉树的结点有左、右之分,
ここに画像を挿入説明
2.二叉树的各种形态

五种基本形态
ここに画像を挿入説明

二叉树的特殊形态—— 满二叉树(Full Binary Tree)
ここに画像を挿入説明

二叉树的特殊形态——完全二叉树
ここに画像を挿入説明

完全二叉树的描述:先给满树编号,根结点编号为1,从根开始自顶向下,自左至右,结点连续编号,在去掉若干结点后,如果树的编号依然连续,则是完全二叉树。
ここに画像を挿入説明

二叉树的基本性质

ここに画像を挿入説明
证:n0=n2+1

设二叉树上结点总数:n=n0+n1+n2
又二叉树上分支总数:b=n1+2*n2
而 b=n-1=n0+n1+n2-1(减去上面没有连线的结点)
因此,n0=n2+1
ここに画像を挿入説明
【例1】二叉树各种结点数目的计算

若一个完全二叉树有n=1450个结点,则度为1的结点、度为2的结点、叶子结点个数分别是多少?有多少左孩子,多少右孩子?该树的高度是多少?

解:树的高度 h =[log n]+1=11

ツリーの高さ:∵完全なバイナリツリー∴1〜10枚の層がいっぱいあり、K = 10であります

最下段のリーフノードの数= N-(2 ^ K -1)= 1450から1023 = 427

K-1のノードの層のテープの葉= [(427 + 1)/ 2] = 214

K-1層のノードが= 2 ^(K-1)= 512

K-1層の葉の数= 512から214 = 298

∴総葉N0 = 427 + 298 = 725

2ノードの次数N2 = N0-1 = 724

1度ノードN1 = N1 - 2N2 = 1450年1月2日* 724 = 1

左の子ノードの数=ノード725度2 + 1 =数のノード数であります。

子どもたちは、ノードの右度=ノード数を持つ2 = 724


バイナリ操作に定義

ここに画像を挿入説明

公開された26元の記事 ウォンの賞賛3 ビュー1471

おすすめ

転載: blog.csdn.net/herui7322/article/details/104169201