flowchart TD
ip1("140.1.10.20")
ip2("87.1.10.3")
ip3("140.1.11.1")
ip4("93.18.1.40")
ip5("103.11.0.2")
ip6("90.15.100.225")
ip7("87.1.5.14")

ip4---ip2
ip2---ip7
ip2---ip6
ip4---ip1
ip1---ip5
ip1---ip3
public BinTree suchePosition(BinTree b, String ip){
	if (!b.isEmpty()){
		if (IPGreater(b.getItem(), ip){
			if (b.hasLeft())
				return suchePosition(b.getLeft(), ip);
			return b;
		}
		else {
			if (b.hasRight())
				return suchePosition(b.getRight(), ip);
			return b;
		}
	}
	return b;
}
			
private bool IPGreater(String a, String b){
	return IPStringToLong(a) > IPStringToLong(b);
}
private long IPStringToLong(String ip){
	int[] ip = new int[4];
	String[] parts = ip.split("\\.");
	
	for (int i = 0; i < 4; i++)
	    ip[i] = Integer.parseInt(parts[i]);
	
	long ipNumbers = 0;
	for (int i = 0; i < 4; i++)
	    ipNumbers += ip[i] << (24 - (8 * i));
	
	return ipNumbers;
}
public BinTree einfuegen(BinTree tree, String ip){
	if (b.isEmpty())
		return tree.setItem(ip);
	else {
		BinTree insertTree = suchePosition(tree, ip);
		BinTree itemTree = new BinTree();
		itemTree.setItem(ip);
		if (IPGreater(insertTree.getItem(), ip))
			insertTree.setLeft(itemTree);
		else 
			insertTree.setRight(itemTree);
	}
	return tree;
}
flowchart TD
ip1("140.1.10.20")
ip2("87.1.10.3")
ip3("140.1.11.1")
ip4("93.18.1.40")
ip5("103.11.0.2")
ip6("90.15.100.225")
ip7("87.1.5.14")
ip8("87.148.226.16")

ip4---ip2
ip2---ip7
ip2---ip6
ip4---ip1
ip1---ip5
ip1---ip3
flowchart TD
ip111("111.12.4.1")
ip070