欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

二叉樹(shù)(二)---線索化二叉樹(shù)-創(chuàng)新互聯(lián)

二叉樹(shù)是一種非線性結(jié)構(gòu),遍歷二叉樹(shù)幾乎都是通過(guò)遞歸或者用棧輔助實(shí)現(xiàn)非遞歸的遍歷。用二叉樹(shù)作為存儲(chǔ)結(jié)構(gòu)時(shí),取到一個(gè)節(jié)點(diǎn),只能獲取節(jié)點(diǎn)的左孩子和右孩子,不能直接得到節(jié)點(diǎn)的任一遍歷序列的前驅(qū)或者后繼。

網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開(kāi)發(fā).小程序定制開(kāi)發(fā),H5頁(yè)面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都攪拌罐車(chē)等企業(yè)提供專業(yè)服務(wù)。

為了保存這種在遍歷中需要的信息,我們利用二叉樹(shù)中指向左右子樹(shù)的空指針來(lái)存放節(jié)點(diǎn)的前驅(qū)和后繼信息。

二叉樹(shù)(二)---線索化二叉樹(shù)

代碼結(jié)構(gòu)如下:

enum PointerTag
{
	THREAD,
	LINK
};

template<class T>
struct BinaryTreeNode
{
	T _data;
	BinaryTreeNode<T>* _left;
	BinaryTreeNode<T>* _right;
	PointerTag _leftTag;//左孩子線索標(biāo)志
	PointerTag _rightTag;//右孩子線索標(biāo)志
	BinaryTreeNode(const T& d)
		:_data(d)
		, _left(NULL)
		, _right(NULL)
	{
		_leftTag = LINK;
		_rightTag = LINK;
	}
};

二叉樹(shù)(二)---線索化二叉樹(shù)

二叉樹(shù)(二)---線索化二叉樹(shù)

二叉樹(shù)(二)---線索化二叉樹(shù)

代碼實(shí)現(xiàn)如下:

void InOrderThreading()    //中序線索化
	{
		Node* prev = NULL;
		_InOrderThreading(_root, prev);
	}

	void PrevOrderThreading()   //前序線索化
	{
		Node* prev = NULL;
		_PrevOrderThreading(_root, prev);
	}

	//void PostOrderThreading()     //后序線索化
	//{
	//	Node* prev = NULL;
	//	_PostOrderThreading(_root, prev);
	//}

	void InOrderThd()     //中序遍歷
	{
		Node* cur = _root;
		while (cur)
		{
			while (cur->_leftTag == LINK)
			{
				cur = cur->_left;
			}
			cout << cur->_data << " ";
			while (cur->_rightTag == THREAD)
			{
				cur = cur->_right;
				cout << cur->_data << " ";
			}
			cur = cur->_right;
		}
		cout << endl;
	}

	void PrevOrderThd()   //前序遍歷
	{
		Node* cur = _root;
		while (cur)
		{
			cout << cur->_data << " ";
			while (cur->_leftTag == LINK)
			{
				cur = cur->_left;
				cout << cur->_data << " ";
			}
			cur = cur->_right;
		}
		cout << endl;
	}

	
	
	void _InOrderThreading(Node* root, Node*& prev)  //
	{
		if (root == NULL)
		{
			return;
		}
		_InOrderThreading(root->_left, prev);
		if (root->_left == NULL)
		{
			root->_leftTag = THREAD;
			root->_left = prev;
		}
		if (prev&&(prev->_right == NULL))
		{
			prev->_rightTag = THREAD;
			prev->_right = root;
		}
		prev = root;
		_InOrderThreading(root->_right, prev);
	}

	void _PrevOrderThreading(Node* root, Node*& prev)
	{
		Node* cur = root;
		if (cur == NULL)
		{
			return;
		}
		if (cur->_left == NULL)
		{
			cur->_leftTag = THREAD;
			cur->_left = prev;
		}
		if (prev&&prev->_right == NULL)
		{
			prev->_rightTag = THREAD;
		    prev->_right = cur;
		}
		prev = cur;
		if (cur->_leftTag == LINK)
		{
			_PrevOrderThreading(cur->_left, prev);
		}
		if (cur->_rightTag == LINK)
		{
			_PrevOrderThreading(cur->_right, prev);
		}
	}

因?yàn)楹笮虮容^復(fù)雜,所以露珠不是很有能力寫(xiě)出來(lái)。以后露珠會(huì)好好提高自己,然后把后序?qū)崿F(xiàn)了哈哈哈哈二叉樹(shù)(二)---線索化二叉樹(shù)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁(yè)標(biāo)題:二叉樹(shù)(二)---線索化二叉樹(shù)-創(chuàng)新互聯(lián)
文章來(lái)源:http://www.chinadenli.net/article24/dgieje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)App設(shè)計(jì)網(wǎng)站設(shè)計(jì)商城網(wǎng)站微信小程序手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司