中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據結構--二叉樹的線索化

發布時間:2020-06-20 05:44:20 來源:網絡 閱讀:430 作者:wpfbcr 欄目:編程語言

線索二叉樹它解決了無法直接找到該結點在某種遍歷序列中的前趨和后繼結點的問題,出現了二叉鏈表找左、右孩子困難的問題,線索二叉樹又分為前序線索化,中序線索化和后序線索化,分別用不同的邏輯去實現。

線索二叉樹的實現思想:借用一個枚舉類型tag其中包含兩個狀態Link(代表有數據),thread(代表下一個節點為空)在一個節點的左節點或者右節點為空的情況下,將它的left或right設為thread,則它的左或右訪問的是改遍歷模式下訪問到的下一個節點數據,這樣就完成了跳到另一顆子樹的過程,減少了遞歸的次數。

數據結構--二叉樹的線索化先序線索化

void _PrevorderThreading(BinaryTreeXsh<T> *cur, BinaryTreeXsh<T> *&prev)
	{
		if (cur == NULL)
		{
			return;
		}
		if (cur->_leftnode==NULL)
		{
			cur->_LeftTag=THREAD;
			cur->_leftnode=prev;
		}
		if (prev&&prev->_rightnode==NULL)
		{
			prev->_RightTag = THREAD;
			prev->_rightnode = cur;
		}
		prev = cur;
		if (cur->_LeftTag == LINK)
		{
			_PrevorderThreading(cur->_leftnode, prev);
		}
		if (cur->_RightTag == LINK)
		{
			_PrevorderThreading(cur->_rightnode, prev);
		}
	}

數據結構--二叉樹的線索化中序線索化

	void _InorderThreading(BinaryTreeXsh<T>* root, BinaryTreeXsh<T> *&prev)
	{
		BinaryTreeXsh<T>*cur = root;
		if (cur == NULL)
		{
			return;
		}
		_InorderThreading(cur->_leftnode, prev);
		
		if (cur->_leftnode == NULL)
		{
			cur->_LeftTag = THREAD;
			cur->_leftnode = prev;
		}
		if (prev&&prev->_rightnode == NULL)
		{
			prev->_RightTag = THREAD;
			prev->_rightnode = cur;
		}
		prev = cur;
		_InorderThreading(cur->_rightnode, prev);
	}

數據結構--二叉樹的線索化后序線索化

	void _PostorderThreading(BinaryTreeXsh<T>*root, BinaryTreeXsh<T>*&prev)
	{
		BinaryTreeXsh<T>*cur = root;
		if (cur == NULL)
		{
			return;
		}
		_PostorderThreading(cur->_leftnode, prev);
		_PostorderThreading(cur->_rightnode, prev);
		if (cur->_leftnode==NULL)
		{
			cur->_LeftTag = THREAD;
			cur->_leftnode = prev;
		}
		if (prev&&prev->_rightnode == NULL)
		{
			prev->_RightTag = THREAD;
			prev->_rightnode = cur;
		}
		prev = cur;
	}




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

两当县| 五台县| 滨海县| 都江堰市| 肥城市| 长葛市| 武穴市| 夹江县| 古浪县| 凤山县| 梁平县| 涟源市| 巢湖市| 清河县| 宝兴县| 桃源县| 武邑县| 黄梅县| 手机| 武汉市| 屯留县| 红河县| 滕州市| 中卫市| 阳城县| 兴山县| 思茅市| 石柱| 河南省| 深泽县| 晋江市| 盐源县| 渭南市| 沁源县| 仙游县| 龙川县| 松溪县| 浦北县| 墨玉县| 宜川县| 峡江县|