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

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

?? avltree.java.bak

?? 數據結構中的AVL TREE的實現
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
					temp.setRightChild( toDelete.getRightChild() );
					toDelete.getRightChild().setParent( temp );
				}
				temp.setParent( node );
				node.setRightChild( temp );
				temp.setSubHeight( temp );
				temp.setBalance( temp );
				if ( temp.balanceValue == -1 && temp.getRightChild().balanceValue == -1)
					temp.getRightChild().rotateLeft();
			}

			if ( node.balanceValue != 1 )
				node.balanceValue ++;
			else if ( node == root && root.getLeftChild().balanceValue == -1 )
			{
				root.getLeftChild().getRightChild().rotateLeft();
				root.rotateRight();
			}
			else  
			{
				if ( node.getLeftChild().balanceValue == -1 )
				{
					node.getLeftChild().getRightChild().rotateLeft();
					node.rotateRight();
				}
				else
					node.rotateRight();
			}
		}

		temp = node;
		while ( temp != null && temp.getParent() != null )	/************check back until reach the root******************/
		{	
			if ( temp.getParent().getLeftChild() == temp && temp.getParent().balanceValue == -1 )
			{
				if ( temp.getParent().getRightChild().balanceValue == 1 )
				{
					temp.getParent().getRightChild().rotateRight();
					temp.getParent().getRightChild().rotateLeft();
				}
/*				if ( temp.getParent() == root && root.getRightChild().balanceValue == 1)
				{
					root.getRightChild().rotateRight();
					root.getRightChild().rotateLeft();
				}*/
				else if ( temp.getParent().getRightChild().balanceValue == -1 )//if ( temp.balanceValue != 0 )
					temp.rotateLeft();
			}
			else if ( temp.getParent().getRightChild() == temp && temp.getParent().balanceValue == 1 )
			{
				if ( temp.getParent().getLeftChild().balanceValue == -1)
				{
					root.getLeftChild().getRightChild().rotateLeft();
					root.rotateRight();
				}
/*				if ( temp.getParent().getParent() == null && temp.getParent().getLeftChild().balanceValue == -1)
				{
					root.getLeftChild().getRightChild().rotateLeft();
					root.rotateRight();
				}*/
				else if ( temp.getParent().getLeftChild().balanceValue == 1 )//if ( temp.balanceValue != 0 )
					temp.getParent().rotateRight();
			}
			temp = temp.getParent();
		}

		temp = node;
		do
		{
			temp.setSubHeight( temp );
			temp = temp.getParent();
		}while ( temp != null );
		
		while ( root.getParent() != null )
			 root = root.getParent();
		
		while ( node != null )
		{
			node.setBalance( node );
			node = node.getParent();
		}
		
	}

	/** 
	 *	private void insert(AVLTreeNode parentNode, AVLTreeNode newNode)
	 *		Insert newNode into this tree, the parent node of the newNode before
	 *		re-arrange will be parentNode.
	 *	NOTE:
	 *		# Here are several things you should do:
	 *			1. insert newNode
	 *			2. change balance value
	 *			3. re-arrange the tree
	 *		# Make sure the result tree is balance, and all the node's balance value
	 *		  are correct.
	 */
	private void insert(AVLTreeNode parentNode, AVLTreeNode newNode)
	{
		// fill your code here
		AVLTreeNode node = newNode;
		
		if ( parentNode == null )
		{
			root = newNode;
			return;
		}
		if ( newNode.getValue() < parentNode.getValue() )
			parentNode.setLeftChild(newNode);
		else
			parentNode.setRightChild(newNode);
		newNode.setParent(parentNode);
		newNode.balanceValue = 0;
		
		while ( node != root)
		{
			node.setSubHeight(node.getParent());
			node = node.getParent();
		}

		mark(newNode);
		while ( root.getParent() != null )
			 root = root.getParent();
	}

	// You can add any private function you like here, but never override any 
	//   function exist.
	private void mark(AVLTreeNode node)
	{
		if (node == root)
			return;
		while ( node.getParent().balanceValue == 0 )
		{
			if ( node.getParent() == root )
			{
				if ( root.getLeftChild() == node )
					root.balanceValue = 1;
				else
					root.balanceValue = -1;
				return;
			}
			
			if ( node.getParent().getLeftChild() == node )
				node.getParent().balanceValue = 1;
			else
				node.getParent().balanceValue = -1;
			node = node.getParent();
		}
		if ( node.getParent() == root )
		{
			if ( root.balanceValue == 1 ) 
			{
				if ( root.getLeftChild() == node )
					re_arrange();	
				else
					root.balanceValue = 0;
			}
			else if ( root.balanceValue == -1 )  
			{	
				if ( root.getRightChild() == node )
					re_arrange();
				else
					root.balanceValue = 0;
			}
			return;
		}
		re_arrange(node);
	}

	private void re_arrange()
	{
		if ( root.balanceValue == 1 )
		{
			if ( root.getLeftChild().balanceValue == 1 )
				root.rotateRight();
			else
			{
				root.getLeftChild().getRightChild().rotateLeft();
				root.rotateRight();
			}
		}
		if ( root.balanceValue == -1)
		{
			if ( root.getRightChild().balanceValue == -1 )
				root.getRightChild().rotateLeft();
			else
			{
				root.getRightChild().rotateRight();
				root.getRightChild().rotateLeft();
			}
		}

	}

	private void re_arrange(AVLTreeNode node)
	{
		if ( node.balanceValue == -1 )
			node.rotateLeft();
		else
			node.getParent().rotateRight();
		while ( node != root )
		{
			node.setSubHeight(node.getParent());
			node = node.getParent();
		}
	}
	// End of your code.

	/**
	 *	private static boolean isBalanceNode(AVLTreeNode node)
	 *		Decide whether the subtree of this node is balance.
	 *	NOTE:
	 *		This function is used to test your code implementation.
	 */
	public static boolean isBalanceNode(AVLTreeNode node)
	{
		int lValue, rValue, value;

		if (node == null)
			return true;
		else 
			value = node.getSubTreeHeight();
		AVLTreeNode lChild = node.getLeftChild();
		AVLTreeNode rChild = node.getRightChild();
		
		lValue = (lChild == null) ? -1 : lChild.getSubTreeHeight(); 
		rValue = (rChild == null) ? -1 : rChild.getSubTreeHeight(); 
/*System.out.print(node.balanceValue+" & "+value+" & "+node.getValue()+"   ;");
if (lChild !=null)
	System.out.print(lChild.balanceValue +" & " +lValue+" & "+lChild.getValue()+"   ;");
if (rChild != null)
	System.out.print(rChild.balanceValue+" & "+rValue+" & "+rChild.getValue()+ "   ;");
System.out.println();*/////////////////////////////////////////////////////////////////
		if (value < lValue || value < rValue || value < 0) 
			return false;

		if ((value - 1 == lValue || value - 1 == rValue) && 
			((lValue - rValue) >= -1 && (lValue - rValue) <= 1))
		{
			if ((lChild == null || isBalanceNode(lChild))
				&& (rChild == null || isBalanceNode(rChild)))
				return true;
		}

		return false;
	}
	
	/**
	 *	public static void main(String[] args)
	 *		Do test.
	 */
	public static void main(String[] args) 
	{
		System.out.println("============ Start testing  ============");
		AVLTreeNode.main(args);

		AVLTree tree = new AVLTree();

		System.out.println("============ Test inserting ============");
		for (int i = 0; i < 5; i++)
		{
			tree.add(i);
			System.out.println("After add node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
		for (int i = 10; i < 15; i++)
		{
			tree.add(i);
			System.out.println("After add node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
		for (int i = 5; i < 10; i++)
		{
			tree.add(i);
			System.out.println("After add node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
		System.out.println("Inorder walk should be in increasing order.");
		AVLTreeNode.inOrder(tree.root);
		System.out.println();
		System.out.println();
		System.out.println("============ Test deleting  ============");
		for (int i = 0; i < 5; i++)
		{
			tree.remove(i);
			System.out.println("After delete node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
		for (int i = 10; i < 15; i++)
		{
			tree.remove(i);
			System.out.println("After delete node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
		for (int i = 5; i < 10; i++)
		{
			tree.remove(i);
			System.out.println("After delete node " + i + " into Tree, the tree is balance : "
				+ AVLTree.isBalanceNode(tree.root));
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线一区| 日av在线不卡| 美女视频黄免费的久久| 99久久99久久久精品齐齐| 欧美另类久久久品| 国产精品久久久久影院亚瑟| 午夜久久久影院| 97久久精品人人爽人人爽蜜臀| 欧美一区二区三区视频在线观看| 国产丝袜美腿一区二区三区| 亚洲高清免费在线| av在线不卡免费看| 国产三级一区二区三区| 日本午夜一本久久久综合| 色久优优欧美色久优优| 国产精品视频观看| 国产成人精品免费在线| 欧美不卡激情三级在线观看| 亚洲国产精品久久人人爱| av亚洲精华国产精华精| 中文字幕av资源一区| 国产精品亚洲专一区二区三区 | 亚洲欧美一区二区三区孕妇| 国产一区二区三区蝌蚪| 精品国产电影一区二区| 日韩av高清在线观看| 精品视频免费看| 亚洲综合色婷婷| 欧美性极品少妇| 一区二区三区四区高清精品免费观看| 不卡一区二区中文字幕| 国产精品久久久久久久久图文区 | 久久青草欧美一区二区三区| 日韩—二三区免费观看av| 91.com视频| 美日韩一区二区| 久久这里都是精品| 国产成人在线视频网站| 国产拍揄自揄精品视频麻豆| 国产一区不卡视频| 亚洲精品视频免费看| 成人黄色片在线观看| 国产精品人人做人人爽人人添| 成人av在线一区二区| 日韩一区有码在线| 在线观看亚洲精品| 日本不卡免费在线视频| 久久久国产综合精品女国产盗摄| 国产精品综合在线视频| 国产精品区一区二区三| 在线中文字幕一区| 日韩一区精品字幕| 久久亚洲精品小早川怜子| 国产白丝精品91爽爽久久| 亚洲欧美一区二区三区久本道91| 欧美精品成人一区二区三区四区| 免费成人在线观看| 国产精品欧美一区二区三区| 91色在线porny| 日韩精品一二区| 久久久久久久久免费| 94-欧美-setu| 另类中文字幕网| 亚洲欧洲一区二区三区| 7777女厕盗摄久久久| 成熟亚洲日本毛茸茸凸凹| 亚洲国产成人av| 久久精品欧美日韩| 欧美亚洲日本国产| 国产一区二区电影| 一区二区激情小说| 精品国产乱码久久久久久免费| 成人激情图片网| 日欧美一区二区| 成人免费在线播放视频| 欧美大度的电影原声| 97se亚洲国产综合自在线观| 久久精品99久久久| 亚洲综合在线视频| 久久久www成人免费无遮挡大片| 在线国产亚洲欧美| 丁香婷婷综合五月| 麻豆成人91精品二区三区| 亚洲欧美另类小说| 久久久久国色av免费看影院| 欧美日韩aaaaa| av电影在线不卡| 国产在线观看一区二区 | 久久久蜜桃精品| 欧美剧情片在线观看| 99久久伊人久久99| 狠狠色丁香久久婷婷综合_中| 一区二区三区四区国产精品| 欧美激情综合五月色丁香小说| 欧美日韩视频不卡| 99久久99久久精品免费观看| 国产在线日韩欧美| 日本欧美一区二区在线观看| 一区二区三区精品久久久| 中文字幕免费不卡| 久久久亚洲午夜电影| 欧美本精品男人aⅴ天堂| 欧美日韩一区视频| 91蜜桃在线免费视频| 99久久免费国产| 成人免费的视频| 成人综合在线观看| 国产黑丝在线一区二区三区| 麻豆国产一区二区| 六月丁香婷婷久久| 国模套图日韩精品一区二区| 美女网站色91| 国内精品视频666| 九九九久久久精品| 国产一区二区三区蝌蚪| 激情文学综合丁香| 国产成人精品一区二| 国产91精品入口| 波多野结衣的一区二区三区| 成人性生交大合| 不卡av在线免费观看| 99视频精品免费视频| 91丨porny丨在线| 欧美亚洲综合久久| 91麻豆精品91久久久久同性| 欧美一区二区成人| 久久久精品影视| 国产精品久久久久久一区二区三区| 中文字幕乱码亚洲精品一区| 17c精品麻豆一区二区免费| 亚洲激情综合网| 日日夜夜一区二区| 国产主播一区二区三区| 懂色av中文一区二区三区| 99精品久久免费看蜜臀剧情介绍| 一本大道av伊人久久综合| 精品视频在线免费看| 91精品国产欧美一区二区成人| 欧美成人精精品一区二区频| 亚洲国产精品ⅴa在线观看| 中文字幕日韩精品一区| 亚洲国产精品久久久久婷婷884| 奇米精品一区二区三区在线观看| 国产真实乱对白精彩久久| av一区二区三区四区| 777亚洲妇女| 国产精品美日韩| 午夜精品成人在线视频| 国产精品一二二区| 欧美日韩国产高清一区二区三区| 精品国产乱码久久久久久1区2区| 国产精品精品国产色婷婷| 天天影视涩香欲综合网| 国产成人小视频| 欧美日韩精品高清| 国产精品视频第一区| 免费观看一级特黄欧美大片| 成人av在线资源| 精品国产乱码久久久久久图片 | 粉嫩13p一区二区三区| 在线精品视频免费播放| 久久久99精品久久| 午夜成人免费视频| 99精品欧美一区二区蜜桃免费| 日韩一区二区在线看| 亚洲精品乱码久久久久久黑人| 久草中文综合在线| 欧美亚洲尤物久久| 欧美激情一区二区三区蜜桃视频| 日韩中文字幕区一区有砖一区 | 欧美亚一区二区| 日本一区二区三区高清不卡| 三级影片在线观看欧美日韩一区二区| 成人免费视频网站在线观看| 51久久夜色精品国产麻豆| 1024成人网| 国产aⅴ精品一区二区三区色成熟| 欧美乱熟臀69xxxxxx| 亚洲久本草在线中文字幕| 国产精品99久久久久久久vr| 欧美一级一区二区| 亚洲成人一区在线| 91久久精品午夜一区二区| 国产精品久久夜| 成人一级黄色片| 国产网红主播福利一区二区| 久久精品国产亚洲高清剧情介绍| 欧美午夜片在线观看| 中文字幕亚洲不卡| 成人精品电影在线观看| wwwwxxxxx欧美| 精品一区二区免费看| 日韩欧美一卡二卡| 日韩高清中文字幕一区| 欧美日韩国产一区二区三区地区| 一区二区成人在线| 色老汉一区二区三区| 一区二区三区四区在线免费观看| www.亚洲国产| 自拍偷拍亚洲综合|