亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? threadbintree.h

?? 實現了線索化二叉樹
?? H
字號:
/*--------------------------------------------------------
文件名:ThreadBinTree.h
作用:定義了線索二叉樹
作者:謝亞龍
創建日期:2008年5月23日
最后修改日期:2008年5月24日
--------------------------------------------------------*/
#ifndef _THREADBINTREE
#define _THREADBINTREE

#include "stdafx.h"
#include "ThreadBinTreeNode.h"
#include <stack>
#include <iostream>
using namespace std;

template <class Elem>
class ThreadBinTree
{
private:
	ThreadBinTreeNode<Elem>* root;//樹根節點
	void DeleteAll(ThreadBinTreeNode<Elem>* p)//刪除以p為根的子樹
	{
		if(!p)//如果p為空,返回
			return;
		DeleteAll(p->Left());//刪除p的左子樹
		DeleteAll(p->Right());//刪除p的右子樹
		delete p;//刪除p節點本身
	}

	ThreadBinTreeNode<Elem>* Create(Elem& ch)//供內部使用的建樹函數
	{
		//構建二叉樹,當輸入的為ch時,構建空二叉樹	
		Elem i;
		cin >> i;
		if(i != ch)
		{
			//如果輸入的不是結束標志,則表示繼續構造
			ThreadBinTreeNode<Elem>* temp = new ThreadBinTreeNode<Elem>(i);
			temp->SetLeft(Create(ch));		//構建左子樹
			temp->SetRight(Create(ch));		//構建右子樹
			return temp;						//返回根節點
		}
		return NULL;	//當得到的是結束符時,表示此子樹構建完成,返回空子樹
	}

	void InThread(ThreadBinTreeNode<Elem>* root,ThreadBinTreeNode<Elem>* &pre)
	{
		//供內部使用的中序線索化一棵二叉樹,root為該樹節點 pre為前驅節點
		if(root)//樹不為空
		{
			InThread(root->Left(),pre);//先線索化左子樹
			if(!root->Left())//左子樹為空
			{
				root->SetLeft(pre);//左指針指向其前驅
				if(pre)//前驅不為空
					root->LTag(true);
			}
			if( pre && !pre->Right())//前驅不為空 且 前驅的右子樹為空
			{
				pre->SetRight(root);//把前驅的 右指針指向root節點,作為pre的后繼
				pre->RTag(true);//改變右標記位的值
			}
			pre = root;
			InThread(root->Right(),pre);//再線索化右子樹
		}
	}

public:
	ThreadBinTree():root(NULL){};//缺省構造函數
	~ThreadBinTree()//析構函數
	{
		DeleteAll(root);
	}

	void CreateTree(Elem& ch)//供外部使用的建樹函數,ch是建樹結束符
	{
		//得到的樹的根賦值給 root就好了
		root = Create(ch);
//		InThread();//構建好樹之后 立即線索化
		InThreadWithStack();
	}

	ThreadBinTreeNode<Elem>* GetRoot()const//返回根節點
	{
		return root;
	}

	void InThread()//供外部使用的線索化二叉樹
	{
		ThreadBinTreeNode<Elem>* pre = NULL;//第一個前驅節點的值為空
		InThread(root,pre);//調用內部的線索化函數,以樹根為節點
	}

	void InOrder()//中序周游線索化二叉樹
	{
		if(!root)//為空樹
			return;
		ThreadBinTreeNode<Elem>* temp = root;
		while(temp->Left())//當temp->left沒指空時
			temp = temp->Left();
		while(1)
		{
			Visit(temp);//訪問的都是 最左節點
			if(!temp->Right())//如果temp右指針指空,則表示temp為線索化的最后的一個右節點的后繼
				return;
			if(temp->RTag())//為后繼,則按照后繼移動即可
				temp = temp->Right();
			else
			{
				temp = temp->Right();//上面的各步都是temp為左的情況
				while(!temp->LTag())//當左標記位表示為 左子節點時
					temp = temp->Left();
			}
		}
	}

	void Visit(ThreadBinTreeNode<Elem>* temp)//訪問當前節點
	{
		if(!temp)//為空節點
			return;
		cout << temp->GetValue() << " ";
	}

	void InThreadWithStack()//用非遞歸實現中序線索化二叉樹
	{
		if(!root)//為空樹
			return;
		ThreadBinTreeNode<Elem>* pre = NULL;//第一個前驅節點的值為空
		ThreadBinTreeNode<Elem>* temp = root;
		stack<ThreadBinTreeNode<Elem>*> s;
		while(temp != NULL || !s.empty())//當 當前節點不為空 或 棧不為空時循環
		{
			if(temp != NULL)//當前節點不為空
			{
				s.push(temp);//入棧
				temp = temp->Left();
			}
			else
			{
				temp = s.top();//的到棧頂元素的值
				if(pre && !pre->Right())//前驅不為空,且前驅的右指針為空時
				{
					pre->SetRight(temp);//得到 pre 的后繼節點為 當前節點
					pre->RTag(true);//改變標記位
				}
				s.pop();//棧頂元素出棧
				if(!temp->Left())//當彈出的元素的左指針為空
				{
					temp->SetLeft(pre);
					if(pre)//如果前驅指針不為空,則改變其左標記位
						temp->LTag(true);
				}
				pre = temp;
				temp = temp->Right();
			}
			
		}
	}


};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色先锋资源久久综合| 国产乱对白刺激视频不卡| 亚洲国产高清不卡| 欧美xxxxxxxx| 欧美一卡2卡3卡4卡| 91亚洲资源网| 国产精品小仙女| 久久精品噜噜噜成人av农村| 亚洲成人免费影院| 亚洲欧美怡红院| 国产欧美精品一区| www国产精品av| 精品国产精品一区二区夜夜嗨| 欧美色图第一页| 欧美中文字幕久久| 91精品1区2区| 日韩一区二区在线看| 欧美唯美清纯偷拍| 欧美色中文字幕| 日本高清视频一区二区| 91麻豆国产香蕉久久精品| voyeur盗摄精品| 91亚洲国产成人精品一区二三| 风间由美一区二区三区在线观看| 国产一区福利在线| 国产精品一区二区三区四区| 国产一区二区剧情av在线| 国产一区二区主播在线| 国产麻豆精品在线观看| 国产乱子伦视频一区二区三区| 国内国产精品久久| 国产大陆a不卡| 成人aa视频在线观看| 97se亚洲国产综合自在线不卡 | 91久久一区二区| 日本久久电影网| 欧美日韩国产片| 久久女同精品一区二区| 久久久亚洲精品石原莉奈 | 奇米888四色在线精品| 婷婷六月综合网| 精品中文字幕一区二区| 国产91在线看| 日本精品裸体写真集在线观看| 欧美军同video69gay| 精品理论电影在线| 亚洲欧洲一区二区在线播放| 一区二区三区高清| 免费成人av资源网| 成人丝袜18视频在线观看| 91国产免费观看| 欧美日韩久久久一区| 精品欧美一区二区在线观看| 日韩精品一区二区三区在线 | 欧美性猛交xxxx乱大交退制版| www.成人在线| 精品福利一区二区三区免费视频| 欧美一区二区三区在线电影| 久久网站最新地址| 亚洲欧美日韩国产一区二区三区| 日本亚洲最大的色成网站www| 国产福利一区二区三区视频| 欧美偷拍一区二区| 久久色中文字幕| 午夜精品久久久久久久久久| 韩国女主播成人在线观看| 国产精品99久久久久久久vr| www.日韩精品| 日韩精品在线看片z| 一区二区三区中文字幕精品精品| 麻豆精品新av中文字幕| 成人福利在线看| 欧美日韩成人在线| 久久伊99综合婷婷久久伊| 亚洲日穴在线视频| 国产精品自在欧美一区| 欧美福利一区二区| 亚洲一二三区视频在线观看| 成人一道本在线| 久久综合久久综合九色| 日韩二区在线观看| 欧美性猛片aaaaaaa做受| 国产精品国产三级国产aⅴ入口 | 欧美a一区二区| 在线视频中文字幕一区二区| 国产欧美日产一区| 国产在线视频精品一区| 日韩三级视频在线观看| 中文字幕在线观看不卡视频| 国产高清在线精品| 日韩美女主播在线视频一区二区三区| 亚洲综合清纯丝袜自拍| 一本久道中文字幕精品亚洲嫩| 国产三级久久久| 另类综合日韩欧美亚洲| 日韩午夜在线观看| 强制捆绑调教一区二区| 欧美日韩国产a| 午夜免费久久看| 欧美精品日韩综合在线| 亚洲国产一二三| 欧美日韩免费在线视频| 亚洲成人黄色影院| 777奇米成人网| 石原莉奈一区二区三区在线观看| 欧美日韩成人在线一区| 蜜桃一区二区三区在线观看| 日韩三级在线观看| 国产成人综合自拍| 亚洲欧洲另类国产综合| 欧美视频日韩视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 欧美三级视频在线| 精品一区二区三区日韩| 亚洲精品一区二区三区精华液| 国产麻豆欧美日韩一区| 最新国产の精品合集bt伙计| 欧洲一区在线电影| 日产国产高清一区二区三区 | 一区二区三区四区激情| 欧美调教femdomvk| 国产在线麻豆精品观看| 国产精品天干天干在线综合| 色婷婷综合久久| 日本免费新一区视频| 久久久久久久久久久久久夜| 99国产欧美久久久精品| 首页国产丝袜综合| 国产亲近乱来精品视频| 日本道免费精品一区二区三区| 免费视频最近日韩| 国产精品高潮呻吟| 日韩视频在线一区二区| 懂色av噜噜一区二区三区av| 亚洲一区二区成人在线观看| 欧美成人乱码一区二区三区| aaa亚洲精品| 乱中年女人伦av一区二区| 中文字幕亚洲欧美在线不卡| 91麻豆精品国产91久久久久久| 懂色一区二区三区免费观看| 久久国产精品99久久久久久老狼| **性色生活片久久毛片| 精品人伦一区二区色婷婷| 91福利国产精品| 国产成人免费在线视频| 午夜一区二区三区视频| 国产精品全国免费观看高清| 欧美一区二区三区婷婷月色| 国产精品小仙女| 日韩中文欧美在线| 国产精品久久毛片av大全日韩| 欧美日韩亚洲综合在线 | 蜜臀av一区二区| 亚洲免费av高清| 国产精品区一区二区三区| 欧美成人女星排名| 欧美一卡二卡在线观看| 欧美吞精做爰啪啪高潮| 97精品久久久午夜一区二区三区| 久久国产视频网| 日韩成人午夜电影| 亚洲国产aⅴ天堂久久| 成人欧美一区二区三区白人| 欧美精品一区二区高清在线观看 | 亚洲午夜久久久久久久久电影网| 欧美成人video| 欧美一区国产二区| 欧美日韩不卡在线| 欧美偷拍一区二区| 91免费视频网址| 91美女在线看| 久久国产人妖系列| 韩国毛片一区二区三区| 亚洲mv在线观看| 污片在线观看一区二区| 国产精品入口麻豆九色| 国产亚洲人成网站| 久久看人人爽人人| 欧美激情资源网| 中文字幕视频一区| 亚洲影院免费观看| 午夜亚洲国产au精品一区二区| 丝袜美腿亚洲综合| 日韩精品91亚洲二区在线观看| 日日夜夜免费精品| 理论片日本一区| 国产精品一区二区黑丝| 成人综合婷婷国产精品久久蜜臀| 成人免费av资源| 日本精品一区二区三区四区的功能| 欧美调教femdomvk| 精品久久久久久亚洲综合网 | 亚洲你懂的在线视频| 亚洲精品免费在线观看| 亚洲成人av电影| 国模套图日韩精品一区二区| 国产成人av电影在线| 91高清视频免费看| 日韩一区二区三区三四区视频在线观看|