例えば、バイナリのためのねじバイナリツリーの基本的な概念は、手がかりを認識、手掛かりバイナリツリートラバーサル配列

なぜ手がかりバイナリツリー?

バイナリリスト格納されたバイナリツリー構造として使用する場合、あなたは簡単に左の子ノードを見つけることができます。しかし、一般的に、ノードは、特定のトラバーサル順序先行および後続ノードに直接見つけることができません。

進数前に学んだ中空チェーンのポインタフィールド:バイナリ鎖が有するn個のノード、N + 1つのポインタフィールドの合計が空であります


スレッドのバイナリ基本的な概念

バイナリヌルリンクリストポインタフィールドを使用します:

代わりに左の子ポインタのノードの左の子が空の場合、空のフィールドその前身を指します;右の子ノードは、右の子ポインタへの空の​​フィールド空の場合その後継者へのポイント;

この種変更ポインタへ呼ばれます手掛かり
プラストレイルは、バイナリツリーと呼ばれますスレッド・バイナリ
それが呼ばれるネジ付きバイナリのいくつかの種類になるというバイナリツリートラバーサル順序に従ってプロセスのスレッド表示

lchildそして最後にrchildポインタを区別するために、子ポインタまたは先行または後続のポインタは、バイナリのリストを周りに向けられます各ノード2つの追加のフラグとフィールドLTAG RTAGそして大会:
ここに画像を挿入説明
の形でノード:
ここに画像を挿入説明


スレッドのバイナリ表現ストレージ

typedef struct BiThrNode{
	int data;
	int ltag,rtag;//左右标志
	struct BiThrNode *lchild,rchild;//左右孩子指针
}BiThrNode,*BiThrTree;	

例えば、手がかりの3種類のバイナリツリーを理解します

前任者と後継者、左右の子供たちに青い実線に赤い点線ポイント

ここに画像を挿入説明
1)予約限定バイナリーツリートレイル
一次配列は、ABCDEの
ように示され:
ここに画像を挿入説明
2)ねじ付きバイナリシーケンスで
順序シーケンスにおいて:BCAED
図である。
ここに画像を挿入説明
3)バイナリツリーへの手がかりをフォロー
その後の配列:C B EDAは、
として示さ。
ここに画像を挿入説明


なぜ追加のヘッドノード?

以下の図ねじ付きバイナリシーケンスで
順序内でのHDIBEAFCG
ここに画像を挿入説明
これは、図から見た、しかし、また、残りの2つのヌルポインタれます。従ってフローティング状態を回避し、操作を容易にするために、我々は、ヘッダーノードを追加します。

動作ヘッドノード:
1)データフィールドが残されるブランク、LTAG = 0、lchildルート点
最後のトラバーサル順序ノード2)RTAG = 1、rchild点
3)配列内の最初のノードをトラバース(NO前駆体)と視野点rchildヘッドノードのlchildノード(NO後継)の最後のフィールド。

図に示す最終結果:
ここに画像を挿入説明

循環リンクリストとして同じように、あなたは、操作がより便利に、任意のノードにアクセスすることができます。


バイナリツリートラバーサルシーケンス手がかり
宣言ストアに、言いました:

typedef struct BiThrNode{
	 int data;
	 int ltag,rtag;//左右标志
	 struct BiThrNode *lchild,rchild;//左右孩子指针
}BiThrNode,*BiThrTree; 

[説明]アルゴリズム

void InOrderTraverse_Thr(BiThrTree T)
{//T指向头结点,头结点的左链lchild指向根结点
//中序遍历二叉线索树T的非递归算法,对每个数据元素直接输出
	BiThrNode *p=T->lchild;	//p指向根结点
	while(p!=T)		//空树或遍历结束时,p==T
	{	
		while(p->ltag==0)
			p=p->lchild;	//沿着左孩子向下
			cout<<p->data;	//访问其左子树为空的结点
		while(p->rtag==1||p->rchild!=T)	
		{
			p=p->rchild;	//沿右线索访问后继结点
			cout<<p->data;
		}
		p=p->rchild;		//转向p的右子树
	}	
}

時間計算量はO(N)のねじバイナリトラバーサル再帰必要がスタック実装されていないので、空間的複雑度は、O(1)であります


コンテンツ参照:「データ構造」ヤン魏ミン

公開された34元の記事 ウォン称賛85 ビュー4609

おすすめ

転載: blog.csdn.net/weixin_45895026/article/details/104064190