計算樹中兩點之間的距離

2021-07-16 02:26:13 字數 1792 閱讀 2862

題目:要求倒不麻煩,乙個節點資料不重複的二叉樹,設其元素型別為整型,找出最小元素與最大元素之間的路徑長度,即兩個節點之間的連線距離,不是節點個數。

過程:以陣列元素來構建二叉樹,自定義陣列為,以(2*i+1,2*i+2)表示子節點,構建樹結構如圖:

}public class t;//二叉樹基本節點資料

treenode root=init_tree(arr,0);//構建二叉樹

//show_tree(root);//前序遍歷二叉樹

listmax_arr=new arraylist();//從根到最大節點的路徑,逆序儲存

listmin_arr=new arraylist();//從根到最小節點的路徑,逆序

int max_value=get_value(root,0,true);//從樹中找到最大資料節點,只是演示,所以資料型別為整型

int min_value=get_value(root,65536,false);//最小資料節點

get_rout(root,max_arr,max_value);//在max_arr中儲存從根到最大節點的路徑,可以隨便設定兩個要查詢的點

get_rout(root,min_arr,min_value);//在min_arr中儲存從根到最小節點的路徑

//不一定非要查詢max_value和min_value之間的距離

//get_rout(root,max_arr,3);get_rout(root,min_arr,7); 可以自選兩個節點

system.out.println("rout1:"+max_arr);//輸出路徑

system.out.println("rout2:"+min_arr);//輸出路徑

system.out.println("dis:"+get_dis(max_arr,min_arr));//輸出給出的兩個節點之間的距離

}private static void show_tree(treenode root)

} private static treenode init_tree(int arr,int i)

f=get_rout(root.left,arr,value);

if(f==1)

f=get_rout(root.right,arr,value);

if(f==1)

} return f;

} private static int get_value(treenode root,int value,boolean c)

value=get_value(root.left,value,c);

value=get_value(root.right,value,c);

} return value;

} private static boolean compare_logic(int n1,int n2,boolean c)else

result=arr1.size()-(i-1)+arr2.size()-(i-1);

return result;}}

結果:

此時查詢的是max_value=8和min_value=1,這兩個節點之間的路徑長,從圖中也可以看出8-3,3-2,2-1,長度為3

rout1:[8, 3, 2]

rout2:[1, 2]

dis:3

計算兩點之間的距離

檔名稱 test.cpp 完成日期 2013年10月17日 版本號 v1.0 輸入描述 輸入兩個橫縱座標 問題描述 輸入兩個橫縱座標,求兩點之間的距離 程式輸出 兩點之間的距離 問題分析 通過輸入兩個橫縱座標,求兩點之間的距離 演算法設計 略 include includeusing namespa...

如何計算兩點之間距離

如何計算兩點之間距離 路線規劃提供了獲取路線距離的方法,見mkrouteplan 類的 getdistance 方法。如果是計算任意兩點的距離,有兩種方法 一種利用勾股定理計算,適用於兩點距離很近的情況 一種按標準的球面大圓劣弧長度計算,適用於距離較遠的情況。static double def pi...

2025 兩點之間的距離

time limit 3 second memory limit 2 mb 輸入平面上兩點的座標,通過呼叫乙個計算兩點間距離的函式求出兩者的距離 兩行,第一行為某一點的座標x y,中間用空格隔開,第二行為另一點的座標x y,中間用空格隔開。一行,兩點間的距離,保留兩位小數 8.5 12.5 1 01...