在Java中查找二进制搜索树中的最小和最大元素

时间:2020-02-23 14:34:11  来源:igfitidea点击:

在本教程中,我们将看到如何在二进制搜索树中找到最小和最大元素。

找到最小元素:

最小元素只不过是二进制搜索树中最左边的节点,因此留下了左侧,直到我们获得最左边的元素。

//Get minimum element in binary search tree
	public static TreeNode minimumElement(TreeNode root)
	{
		if(root.left==null)
			return root;
		else
		{
			return minimumElement(root.left);
		}
	}

找到最大元素:

最大元素只不过是二进制搜索树中最右边的节点,因此遍历直到获得最右边的元素。

//Get maximum element in binary search tree
	public static TreeNode maximumElement(TreeNode root)
	{
		if(root.right==null)
			return root;
		else
		{
			return maximumElement(root.right);
		}
	}

完整的Java程序:

package org.igi.theitroad.binarysearchtree;
 
public class BinarySearchTreeMinMaxMain {
	public static class TreeNode
	{
		int data;
		TreeNode left;
		TreeNode right;
		TreeNode(int data)
		{
			this.data=data;
		}
	}
 
	public static boolean search(TreeNode root,TreeNode nodeToBeSearched)
	{
		if(root==null)
			return false;
		if(root.data== nodeToBeSearched.data)
		{
			return true;
		}
		boolean result=false;
		if(root.data > nodeToBeSearched.data)
			result=search(root.left,nodeToBeSearched);
		else if(root.data < nodeToBeSearched.data)
			result= search(root.right,nodeToBeSearched);
		return result;
	}
 
	//Get minimum element in binary search tree
	public static TreeNode minimumElement(TreeNode root)
	{
		if(root.left==null)
			return root;
		else
		{
			return minimumElement(root.left);
		}
	}
 
	//Get maximum element in binary search tree
	public static TreeNode maximumElement(TreeNode root)
	{
		if(root.right==null)
			return root;
		else
		{
			return maximumElement(root.right);
		}
	}
	public static TreeNode insert(TreeNode root,TreeNode nodeToBeInserted)
	{
		if(root==null)
		{
			root=nodeToBeInserted;
			return root;
		}
 
		if(root.data > nodeToBeInserted.data)
		{
			if(root.left==null)
				root.left=nodeToBeInserted;
			else
				insert(root.left,nodeToBeInserted);
		}
		else if(root.data < nodeToBeInserted.data)
			if(root.right==null)
				root.right=nodeToBeInserted;
			else
				insert(root.right,nodeToBeInserted);
		return root;
	} 
 
	public static void inOrder(TreeNode root)
	{
		if(root==null)
			return;
		inOrder(root.left);
		System.out.print(root.data+" ");
		inOrder(root.right);
	}
	public static void main(String[] args)
	{
 
		//Creating a binary search tree
		TreeNode rootNode=createBinarySearchTree();
		System.out.println("Minimum element in binary search tree: "+minimumElement(rootNode).data);
		System.out.println("Maximum element in binary search tree: "+maximumElement(rootNode).data);
 
	}   
 
 
	public static TreeNode createBinarySearchTree()
	{
		TreeNode rootNode =new TreeNode(40);
		TreeNode node20=new TreeNode(20);
		TreeNode node10=new TreeNode(10);
		TreeNode node30=new TreeNode(30);
		TreeNode node60=new TreeNode(60);
		TreeNode node50=new TreeNode(50);
		TreeNode node70=new TreeNode(70);
		TreeNode node5=new TreeNode(5);
		TreeNode node55=new TreeNode(55);
 
		insert(null,rootNode);
		insert(rootNode,node20);
		insert(rootNode,node10);
		insert(rootNode,node30);
		insert(rootNode,node60);
		insert(rootNode,node50);
		insert(rootNode,node70);
		insert(rootNode,node5);
		insert(rootNode,node55);
 
		return rootNode;
	}
 
}

运行上面的程序时,我们将得到以下输出:

Minimum element in binary search tree: 5
Maximum element in binary search tree: 70