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

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

?? avlnode.h

?? 這是一個非常經典的二叉平衡樹
?? H
字號:
#ifndef _cavlnode_
#define _cavlnode_

#include<iostream.h>
#include"avlite~1.h"

template<class T>
class CAVLNode
{
	private:
		CAVLNode<T>* GetBiggest() {return !m_right?this:m_right->GetBiggest();}
		CAVLNode<T>* GetSmallest(){return !m_left?this:m_left->GetSmallest();}
		CAVLNode<T>* LL();
		CAVLNode<T>* RR();
		CAVLNode<T>* LR();
		CAVLNode<T>* RL();
		CAVLNode<T>* Del();
		void SetSigns(short s);
		void FindWay(short his[]);
		 
		short m_avl;
		short m_sign;
		CAVLNode<T>* m_prev;
		CAVLNode<T>* m_left;
		CAVLNode<T>* m_right;
		T m_content;
		
	public:
		friend class CAVLTree<T>;
		friend class CAVLIterator<T,IN_ORDER>;
		friend class CAVLIterator<T,PRE_ORDER>;
		friend class CAVLIterator<T,POST_ORDER>;
		CAVLNode(T content);
		CAVLNode<T>* GetSymetricSon();
		CAVLNode<T>** GetPrevPtr();
		int GetHeight();
		CAVLNode<T>* GetRoot();
		void CalcAVL();
		CAVLNode<T>* Find(T content);
		CAVLNode<T>* AVL(short his[]=NULL);
		T GetContent();
};

template<class T>
CAVLNode<T>::CAVLNode(T content)
{
	m_prev=m_left=m_right=NULL;
	m_content=content;
}

template<class T>
int CAVLNode<T>::GetHeight()	//liefert Hoehe des Baumes
{
	int l = m_left  ? m_left  -> GetHeight() : -1;
	int r = m_right ? m_right -> GetHeight() : -1;

	return l > r ? l+1 : r+1;
}


template<class T>
CAVLNode<T>* CAVLNode<T>::Find(T content)
{
	if(content == m_content)
		return this;
	if(content <  m_content)
		return m_left?m_left->Find(content):this;

	return m_right?m_right->Find(content):this;
}


template<class T>
CAVLNode<T> *CAVLNode<T>::LL()
{
	CAVLNode<T> *help=m_left->m_right,*ret=GetRoot();
	m_left->m_right=this;
	if(m_prev)
		*GetPrevPtr()=m_left;
	else
		ret=m_left;
	m_left->m_prev=m_prev;
	m_prev=m_left;
	m_left=help;
	if(m_left) m_left->m_prev=this;
	return ret;
}

template<class T>
CAVLNode<T> *CAVLNode<T>::RR()
{
	CAVLNode<T> *help=m_right?m_right->m_left:NULL,*ret=GetRoot();
	m_right->m_left=this;
	if(m_prev)
		*GetPrevPtr()=m_right;
	else
		ret=m_right;
	m_right->m_prev=m_prev;
	m_prev=m_right;
	m_right=help;
	if(m_right) m_right->m_prev=this;
	return ret;
}

template<class T>
CAVLNode<T> *CAVLNode<T>::RL()
{
	CAVLNode<T> *ret=GetRoot();
	m_right->m_left->m_prev=m_prev;
	if(m_prev)
		*GetPrevPtr()=m_right->m_left;
	else
		ret=m_right->m_left;         
	m_prev=m_right->m_left;			
	m_right->m_left=m_prev->m_right;
	if(m_right->m_left) m_right->m_left->m_prev=m_right;
	m_prev->m_right=m_right;		
	m_right=m_prev->m_left;			
	m_prev->m_left=this;			
	m_prev->m_right->m_prev=m_prev;
	if(m_right) m_right->m_prev=this;
	return ret;
}

template<class T>
CAVLNode<T> *CAVLNode<T>::LR()
{
	CAVLNode<T> *ret=GetRoot();
	m_left->m_right->m_prev=m_prev;
	if(m_prev)
		*GetPrevPtr()=m_left->m_right;
	else
		ret=m_left->m_right;        
	m_prev=m_left->m_right;			
	m_left->m_right=m_prev->m_left;	
	if(m_left->m_right) m_left->m_right->m_prev=m_left;
	m_prev->m_left=m_left;		
	m_left=m_prev->m_right;		
	m_prev->m_right=this;		
	m_prev->m_left->m_prev=m_prev;
	if(m_left) m_left->m_prev=this;
	return ret;
}

template<class T>
void CAVLNode<T>::CalcAVL()
{
	m_avl = (m_right ? m_right -> GetHeight() + 1: 0) - (m_left  ? m_left  -> GetHeight() + 1: 0);
}

template<class T>
CAVLNode<T>* CAVLNode<T>::GetRoot()
{
	if(m_prev)
		return m_prev->GetRoot();
	else
		return this;
}

template<class T>
CAVLNode<T> ** CAVLNode<T>::GetPrevPtr()
{
	if(m_prev==NULL)
		return NULL;
	if(m_prev->m_left==this)
		return &(m_prev->m_left);
	else
		return &(m_prev->m_right);
}

template<class T>
CAVLNode<T>* CAVLNode<T>::GetSymetricSon()
{
	if(m_left)
		return m_left->GetBiggest();
	if(m_right)
		return m_right->GetSmallest();
	return NULL;
}

template<class T>
CAVLNode<T>* CAVLNode<T>::AVL(short his[]/*=NULL*/)
{
	if(!his)
	{
		his=new short[2];
		his[0]=his[1]=-1;
	}
	CalcAVL();
	if(m_avl<-1||m_avl>1)
	{
		if(his[0]==-1||his[1]==-1)
			FindWay(his);

		if(his[0])
			if(his[1])
				return RR();
			else
				return RL();
		else
			if(his[1])
				return LR();
			else
				return LL();
	}
	if(!m_prev)
			return this;
	his[1]=his[0];
	his[0]=m_prev->m_left==this?0:1;
	return m_prev->AVL(his);
}

template<class T>
CAVLNode<T>* CAVLNode<T>::Del()
{
	CAVLNode<T> *ret=m_prev;
	if(m_left)
		if(m_right)
		{
			CAVLNode<T>*help=GetSymetricSon();
			m_content=help->m_content;
			ret=help->Del();
			delete help;
		}
		else
		{
			if(m_prev) *GetPrevPtr()=m_left;
			ret=m_left;
			m_left->m_prev=m_prev;
		}
	else
		if(m_right)
		{
			if(m_prev) *GetPrevPtr()=m_right;
			ret=m_right;
			m_right->m_prev=m_prev;
		}
		else
			if(m_prev) *GetPrevPtr()=NULL;
	return ret;
}

template<class T>
void CAVLNode<T>::FindWay(short his[])
{
	his[0]=m_avl<0?0:1;
	if(his[0])
	{
		if(m_right) m_right->CalcAVL();
		his[1]=m_right->m_avl<0?0:1;
	}
	else
	{
		if(m_left) m_left->CalcAVL();
		his[1]=m_left->m_avl<0?0:1;
	}
}

template<class T>
void CAVLNode<T>::SetSigns(short s)
{
	m_sign=s;
	if(m_left)
		m_left->SetSigns(s);
	if(m_right)
		m_right->SetSigns(s);
}

template<class T>
T CAVLNode<T>::GetContent()
{
	return m_content;
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线成人精品| 中文字幕精品在线不卡| 99久久久精品免费观看国产蜜| 另类小说综合欧美亚洲| 日本成人超碰在线观看| 免费av成人在线| 另类综合日韩欧美亚洲| 精品一区二区三区免费观看| 麻豆精品久久久| 国产一区二区三区四| 国产盗摄女厕一区二区三区| 国产成人av一区二区三区在线| 国产成人精品影院| www.亚洲免费av| 91福利国产精品| 欧美视频一区二区三区| 正在播放亚洲一区| 精品国产自在久精品国产| 久久网这里都是精品| 国产精品电影院| 亚洲国产精品久久一线不卡| 日韩精品乱码免费| 国产精品一卡二卡在线观看| 91香蕉视频黄| 欧美一级一级性生活免费录像| 欧美精品一区二区高清在线观看| 国产午夜亚洲精品羞羞网站| 亚洲色图在线播放| 日韩成人午夜精品| 成人免费看视频| 欧美日韩免费电影| 国产欧美一区二区精品性色超碰 | 亚洲v中文字幕| 久99久精品视频免费观看| 不卡av在线网| 51午夜精品国产| 中文无字幕一区二区三区| 亚洲成人免费看| 国产成人av一区二区三区在线| 在线观看免费视频综合| 91久久精品一区二区三区| 国产精品一区久久久久| 成人精品高清在线| 欧美日韩大陆在线| 自拍偷在线精品自拍偷无码专区 | 亚洲视频你懂的| 久久疯狂做爰流白浆xx| 欧美中文字幕不卡| 国产精品天美传媒| 麻豆国产精品一区二区三区| 91美女在线观看| 日本一区二区三区免费乱视频| 五月天久久比比资源色| www.亚洲人| 国产欧美一区二区三区网站| 伦理电影国产精品| 91麻豆精品国产91久久久久久久久| 国产精品女同互慰在线看| 麻豆91在线看| 精品福利二区三区| 亚洲一区二区三区在线播放| eeuss鲁片一区二区三区在线看| 欧美白人最猛性xxxxx69交| 亚洲电影欧美电影有声小说| 在线观看亚洲一区| 亚洲精品久久嫩草网站秘色| 99久久久无码国产精品| 国产精品久久久久久久久免费相片| 久久精品国产精品青草| 欧美一区二区日韩| 蜜臀99久久精品久久久久久软件| 欧美狂野另类xxxxoooo| 亚洲va天堂va国产va久| 精品1区2区3区| 亚洲电影一区二区| 欧美日韩dvd在线观看| 亚洲国产欧美一区二区三区丁香婷| 99热精品一区二区| 亚洲天堂成人网| 91免费版在线看| 亚洲一区二区精品视频| 欧美久久高跟鞋激| 欧美aⅴ一区二区三区视频| 3d动漫精品啪啪一区二区竹菊| 日韩中文字幕91| 欧美高清视频不卡网| 久色婷婷小香蕉久久| 2020国产精品久久精品美国| 国产精品伊人色| 国产日本欧美一区二区| 99久久精品费精品国产一区二区| 亚洲卡通动漫在线| 中文字幕人成不卡一区| 欧美在线免费播放| 日韩在线a电影| 久久天堂av综合合色蜜桃网| 粉嫩av一区二区三区| 亚洲精选视频在线| 日韩欧美一二三四区| 成人手机电影网| 亚洲午夜激情网页| 久久久久亚洲蜜桃| 91福利在线观看| 精品午夜一区二区三区在线观看| 国产精品美女一区二区在线观看| 91亚洲精品久久久蜜桃网站| 日本vs亚洲vs韩国一区三区二区| 国产欧美一区二区精品性色 | 国产一区在线观看视频| 亚洲欧美另类图片小说| 欧美一区二区三区不卡| 99精品久久免费看蜜臀剧情介绍| 日韩中文字幕不卡| 亚洲私人影院在线观看| 日韩视频一区二区三区在线播放| 成人小视频在线观看| 日韩福利视频网| 亚洲人成网站色在线观看| 26uuu国产日韩综合| 欧美亚一区二区| 国产a精品视频| 免费一级欧美片在线观看| 欧美经典三级视频一区二区三区| 欧美日韩dvd在线观看| 波波电影院一区二区三区| 蜜桃视频在线一区| 亚洲成av人片在线观看无码| 国产精品视频线看| 久久精品一区二区三区四区| 7777精品伊人久久久大香线蕉经典版下载 | 中文字幕第一区| 看片网站欧美日韩| 中文字幕在线不卡视频| 色综合久久中文字幕综合网| 国产一区二区视频在线播放| 亚洲一区二区三区四区五区中文| 国产日韩欧美激情| 精品国产免费人成在线观看| 制服丝袜亚洲色图| 欧美日韩一区二区三区视频| 91色综合久久久久婷婷| 成人高清免费观看| 国产精品一品二品| 国产在线精品不卡| 精品中文av资源站在线观看| 视频一区欧美日韩| 一区二区三区不卡在线观看 | 亚洲免费av在线| 久久人人97超碰com| 日韩精品在线看片z| 欧美日韩精品电影| 欧美性猛片xxxx免费看久爱| 91浏览器在线视频| 91亚洲永久精品| 在线免费观看不卡av| 91久久精品一区二区三| 一本大道av一区二区在线播放| 成人app软件下载大全免费| 不卡在线观看av| 色诱视频网站一区| 欧美日韩精品一区二区| 欧美精品免费视频| 日韩精品一区二区三区在线观看| 91精品国产综合久久精品麻豆| 91精品免费在线| 精品久久人人做人人爰| 日本一区二区三区国色天香 | 日韩视频在线永久播放| 精品久久久久久综合日本欧美| 日韩欧美中文一区| 久久综合久久99| 依依成人精品视频| 天天av天天翘天天综合网| 久久99精品久久久久久| 国产91丝袜在线播放| 色诱亚洲精品久久久久久| 在线播放91灌醉迷j高跟美女| 欧美v亚洲v综合ⅴ国产v| 欧美国产日本韩| 亚洲国产成人va在线观看天堂| 男女男精品视频| 丁香啪啪综合成人亚洲小说| 91色婷婷久久久久合中文| 欧美日韩视频不卡| 日韩一二三四区| 国产精品麻豆网站| 免费成人小视频| 一本色道亚洲精品aⅴ| 777午夜精品免费视频| 国产精品午夜电影| 欧美韩国一区二区| 日韩精品国产精品| 不卡视频免费播放| 精品久久久久av影院| 亚洲色欲色欲www| 久久99国产精品免费网站| 在线视频亚洲一区| 国产区在线观看成人精品| 午夜久久久久久电影| 成人综合在线视频|