題目:要求倒不麻煩,乙個節點資料不重複的二叉樹,設其元素型別為整型,找出最小元素與最大元素之間的路徑長度,即兩個節點之間的連線距離,不是節點個數。
過程:以陣列元素來構建二叉樹,自定義陣列為,以(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...