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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? binarytree.h

?? 金元平數(shù)據(jù)答案 金元平
?? H
字號(hào):
#ifndef BINARYTREE_H
#define BINARYTREE_H

#include <iostream>
#include <iomanip>
#include <stack>
#include <queue>
using namespace std;

template <class T> class inorderIterator;
template <class T> class postorderIterator;
template <class T> class preorderIterator;
template <class T> class levelorderIterator;
template <class T> class binaryTree;
template <class T>
class binaryTreeNode
{
	friend class inorderIterator<T>;
	friend class postorderIterator<T>;
	friend class preorderIterator<T>;
	friend class levelorderIterator<T>;
	friend class binaryTree<T>;
public:
	binaryTreeNode();
	binaryTreeNode(const T& d, binaryTreeNode<T>* l, binaryTreeNode<T>* r)
	{
		data = d;
		leftChild = l;
		rightChild = r;
	};

private:
	binaryTreeNode* leftChild;
	binaryTreeNode* rightChild;
	T data;
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

template <class T> class inorderIterator;
template <class T> class postorderIterator;
template <class T> class preorderIterator;
template <class T> class levelorderIterator;
template <class T>
class binaryTree
{
	friend class inorderIterator<T>;
	friend class postorderIterator<T>;
	friend class preorderIterator<T>;
	friend class levelorderIterator<T>;
public:
	binaryTree()	{	root = NULL;};

	//Create a full binary tree of 7 nodes for testing, 
	//and data in the nodes are all integers and increase by level order
	void createTesting();
	void printInFourOrders();
private:
	binaryTreeNode<T>* root;

};

template <class T>
void binaryTree<T>::createTesting()
{
	binaryTreeNode<int>* temp7 = new binaryTreeNode<int>(7, NULL, NULL);
	binaryTreeNode<int>* temp6 = new binaryTreeNode<int>(6, NULL, NULL);
	binaryTreeNode<int>* temp5 = new binaryTreeNode<int>(5, NULL, NULL);
	binaryTreeNode<int>* temp4 = new binaryTreeNode<int>(4, NULL, NULL);
	binaryTreeNode<int>* temp3 = new binaryTreeNode<int>(3, temp6, temp7);
	binaryTreeNode<int>* temp2 = new binaryTreeNode<int>(2, temp4, temp5);
	binaryTreeNode<int>* temp1 = new binaryTreeNode<int>(1, temp2, temp3);
	root = temp1;
}

template <class T>
void binaryTree<T>::printInFourOrders()
{
	T* i = NULL;
	cout<<"inorder display:"<<endl;
	inorderIterator<T> inorderIt(*this);
	while ( (i=inorderIt.next()) != NULL )
		cout<<setw(4)<<*i;
	cout<<endl;

	cout<<"postorder display:"<<endl;
	postorderIterator<T> postorderIt(*this);
	while ( (i=postorderIt.next()) != NULL )
		cout<<setw(4)<<*i;
	cout<<endl;

	cout<<"preorder display:"<<endl;
	preorderIterator<T> preorderIt(*this);
	while ( (i=preorderIt.next()) != NULL )
		cout<<setw(4)<<*i;
	cout<<endl;

	cout<<"levelorder display:"<<endl;
	levelorderIterator<T> levelorderIt(*this);
	while ( (i=levelorderIt.next()) != NULL )
		cout<<setw(4)<<*i;
	cout<<endl;
	
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

template <class T>
class inorderIterator
{
public:
	inorderIterator(binaryTree<T> tree)	{	t.root = current = tree.root;};
	T* next();
private:
	binaryTree<T> t;
	stack<binaryTreeNode<T>*> s;
	binaryTreeNode<T>* current;
};

template <class T>
T* inorderIterator<T>::next()
{
	while ( current!=NULL )
	{
		s.push(current);
		current = current->leftChild;
	}
	
	if ( !s.empty() )
	{
		current = s.top();
		s.pop();
		T* temp = &current->data;
		current = current->rightChild;
		return temp;
	}
	else
		return NULL;
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

template <class T>
struct nodePointerWithTag
{
	binaryTreeNode<T>* p;
	bool rightChildVistited;
};

template <class T>
class postorderIterator
{
public:
	postorderIterator(binaryTree<T> tree)	{	t.root = current = tree.root;};
	T* next();
private:
	binaryTree<T> t;
	stack< nodePointerWithTag<T> > s;
	binaryTreeNode<T>* current;
};

template <class T>
T* postorderIterator<T>::next()
{
	nodePointerWithTag<T> npwt;
	while (1)
	{
		while ( current!=NULL )
		{
			npwt.p = current;
			npwt.rightChildVistited = false;
			s.push(npwt);
			current = current->leftChild;
		}
		
		if ( !s.empty() )
		{
			npwt = s.top();
			current = npwt.p;
			s.pop();
			if ( !npwt.rightChildVistited )
			{
				npwt.rightChildVistited = true;
				s.push(npwt);
				current = current->rightChild;
			}
			else
			{
				T* temp = &current->data;
				current = NULL;
				return temp;
			}
		}
		else
			return NULL;
	}
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

template <class T>
class preorderIterator
{
public:
	preorderIterator(binaryTree<T> tree)	{	t.root = current = tree.root;};
	T* next();
private:
	binaryTree<T> t;
	stack<binaryTreeNode<T>*> s;
	binaryTreeNode<T>* current;
};

template <class T>
T* preorderIterator<T>::next()
{
	while(1)
	{
		if ( current!=NULL )
		{
			s.push(current);
			T* temp = &current->data;
			current = current->leftChild;
			return temp;
		}
		else if ( !s.empty() )
		{
			current = s.top()->rightChild;
			s.pop();
		}
		else
			return NULL;
	}
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

template <class T>
class levelorderIterator
{
public:
	levelorderIterator(binaryTree<T> tree)	{	t.root = current = tree.root;};
	T* next();
private:
	binaryTree<T> t;
	queue<binaryTreeNode<T>*> q;
	binaryTreeNode<T>* current;
};

template <class T>
T* levelorderIterator<T>::next()
{
	T* temp = NULL;
	if ( current!=NULL )
	{
		temp = &current->data;
		if (current->leftChild!=NULL)
			q.push(current->leftChild);
		if (current->rightChild!=NULL)
			q.push(current->rightChild);
	}
	if (!q.empty())
	{
		current = q.front();
		q.pop();
	}
	else
		current = NULL;
	return temp;
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久免费精品国产一区二区 | 欧美国产激情一区二区三区蜜月 | 床上的激情91.| 国产精品亲子乱子伦xxxx裸| 成人免费视频网站在线观看| 亚洲视频资源在线| 欧美精品丝袜中出| 国产激情偷乱视频一区二区三区 | 亚洲视频在线观看三级| 欧美另类videos死尸| 国产精华液一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 麻豆久久久久久久| 国产精品久久久久精k8| 欧美日韩另类一区| 成人免费看的视频| 免费在线观看成人| 亚洲免费在线电影| 2欧美一区二区三区在线观看视频| 高清视频一区二区| 日韩国产欧美在线观看| 国产日产欧美一区| 日韩视频在线永久播放| 99久久综合精品| 久久草av在线| 亚洲午夜电影网| 国产精品网友自拍| 日韩一级大片在线| 欧美系列一区二区| 成人av资源站| 国产原创一区二区三区| 天堂成人国产精品一区| 日韩一区欧美小说| 久久综合成人精品亚洲另类欧美| 99久久精品一区| 日韩va欧美va亚洲va久久| 国产精品的网站| 久久精品视频在线看| 欧美日韩电影在线播放| 99精品国产热久久91蜜凸| 国内精品伊人久久久久av影院 | 精品在线一区二区三区| 亚洲一区二区三区中文字幕| 欧美国产乱子伦| 欧美伦理视频网站| 色欧美日韩亚洲| 99这里只有久久精品视频| 国模套图日韩精品一区二区| 亚洲午夜私人影院| 伊人开心综合网| 自拍偷自拍亚洲精品播放| 日韩美女一区二区三区| 欧美日韩高清一区二区三区| 成人午夜视频在线观看| 国产宾馆实践打屁股91| 日韩精品国产欧美| 日韩精品每日更新| 亚洲精品免费在线| 国产精品美日韩| 国产无遮挡一区二区三区毛片日本| 日韩三级在线观看| 欧美一区三区四区| 日韩女优毛片在线| 日韩美女主播在线视频一区二区三区| 欧美日韩国产色站一区二区三区| 日本乱人伦一区| 色噜噜偷拍精品综合在线| 色美美综合视频| 国产精品羞羞答答xxdd| 国产成人av在线影院| 成人亚洲精品久久久久软件| 成人午夜视频网站| 色视频成人在线观看免| 在线亚洲免费视频| 欧美精品少妇一区二区三区 | 在线观看www91| 欧美日韩综合不卡| 91精品国产综合久久婷婷香蕉| 一本一本大道香蕉久在线精品| 色香色香欲天天天影视综合网| 色狠狠综合天天综合综合| 欧美日韩国产精选| 日韩免费看网站| 国产清纯在线一区二区www| 国产精品久久久久一区二区三区| 亚洲日本va午夜在线电影| 一区二区三区不卡在线观看| 婷婷夜色潮精品综合在线| 九九视频精品免费| av亚洲精华国产精华| 91视视频在线观看入口直接观看www| 成人动漫中文字幕| 色综合久久中文综合久久牛| 欧美三级一区二区| 精品国精品国产| 亚洲视频综合在线| 天天操天天综合网| 国产精品一区在线观看乱码 | 奇米亚洲午夜久久精品| 国内精品伊人久久久久av影院| 成人妖精视频yjsp地址| 欧美日韩免费在线视频| 精品av久久707| 国产精品不卡在线| 伊人色综合久久天天人手人婷| 蜜桃在线一区二区三区| 成人av手机在线观看| 欧美日韩国产首页| 久久影音资源网| 一区二区在线观看视频在线观看| 免费在线观看一区二区三区| 久久国产麻豆精品| 日本精品裸体写真集在线观看| 欧美大片在线观看一区| 亚洲图片你懂的| 久久国内精品视频| 欧美性色综合网| 日本一区免费视频| 日韩精品每日更新| 成人av在线看| 日韩女同互慰一区二区| 亚洲在线视频网站| 国产.欧美.日韩| 日韩精品一区二区三区在线 | 欧美日韩电影在线| 国产精品久久久久三级| 另类人妖一区二区av| 欧美无人高清视频在线观看| 国产精品日韩精品欧美在线| 亚洲一区国产视频| 国产一区欧美日韩| 在线成人免费观看| 国产精品美女一区二区| 黑人精品欧美一区二区蜜桃| 欧美色图片你懂的| 国产精品系列在线| 久久99精品国产.久久久久久| 欧美午夜电影网| 亚洲欧美经典视频| 国产91高潮流白浆在线麻豆| 精品国产青草久久久久福利| 天天操天天色综合| 欧美吻胸吃奶大尺度电影| ...xxx性欧美| 不卡一区二区中文字幕| 国产三级一区二区| 国产一区二区福利视频| 欧美亚洲愉拍一区二区| 一区二区三区四区视频精品免费 | 成人av免费观看| 久久久噜噜噜久噜久久综合| 久久国产欧美日韩精品| 91精品国产麻豆| 午夜不卡av免费| 欧美日韩一区二区不卡| 亚洲综合清纯丝袜自拍| 91女人视频在线观看| 欧美va日韩va| 青娱乐精品视频在线| 欧美一区二区在线视频| 日韩电影一区二区三区四区| 欧美日韩成人综合| 亚洲h精品动漫在线观看| 欧美在线高清视频| 亚洲成人久久影院| 欧美人xxxx| 日本系列欧美系列| 日韩免费电影一区| 国产精品综合久久| 国产喷白浆一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 精品国产乱码久久久久久老虎| 国产激情一区二区三区| 成人午夜av影视| 国产99久久久精品| 亚洲欧美视频在线观看视频| 欧美日韩中文字幕一区二区| 久久精品国产一区二区三区免费看| 国产亚洲成av人在线观看导航| 色噜噜狠狠色综合欧洲selulu| 久久精品免费观看| 亚洲色大成网站www久久九九| 欧美精品三级在线观看| 懂色av中文字幕一区二区三区| 亚洲综合在线视频| 久久久久99精品国产片| 欧美偷拍一区二区| 成人性视频网站| 日韩黄色免费网站| 国产精品蜜臀在线观看| 91精品国产综合久久精品性色| 国产白丝精品91爽爽久久| 天天免费综合色| 亚洲欧美日韩国产综合| 精品国产乱码久久久久久闺蜜| 色av成人天堂桃色av| 国产福利91精品一区二区三区| 午夜精品福利在线| 亚洲另类中文字| 国产精品沙发午睡系列990531|