avatar
Рейтинг
+1.74
Күші
0.15

Батырбеков Даулет

Жарияланымдары

Сол баяғы ағаш, ең соңғы нұсқасы

Блог аты daulet

public class Tree {

int[] arr = new int[] { -1, 0, 1, 2, 3, 3, 2, 1, 1, 8, 9, 9, 8 };
  	
	public static void main(String[] args) {
		
		Tree tree = new Tree();					
		int first = 6;  // 1 - нукте
	 	int second = 9;	 // 2-  нукте 
	 	
	 	int levelFirst = tree.getLevel(first,0);   // 1 - нуктенин этажы
		int levelSecond = tree.getLevel(second,0);  // 2 - нуктенин этажы
	 	
		int count = 0;
		// кай нуктенин этажы улкен, сол нуктени бириншы аргумент ретинде жиберемиз жане канша этажга улкен екенин жиберемиз
		if (levelFirst>levelSecond) 
			count = tree.pathCount(first,second,levelFirst - levelSecond,0);
		else
			count = tree.pathCount(second,first,levelSecond - levelFirst,0);
		System.out.println("count:" +count);
	}
	
	// кай нуктенин этажы улкен, сол нуктеден бастап жогары котерилемиз, 2 нуктенин этажы   бирдей болганда, 2-уин бирге котере беремиз
	// еки нуктенин атасы бирдей болганда циклден шыгамыз
	private  int getLevel(Integer element, int level) {
		int index = arr[element];
		if (index==-1) return level;
		else
		{
			level++;
			return getLevel(index, level);
		}				
	}
	
	private int pathCount(int first,int second,int level,int count)
	{
		if (first == second) return count;
		first= arr[first];		
		if (count>=level)
		{
			count+=2;
			second = arr[second];			
		}
		else			
			count++;
		return pathCount(first, second, level, count);
	}

}