一、树详解
二、树的应用
1.哈夫曼树的应用(石子合并求最小体力消耗)
import java.util.Scanner;
public class HuffmanTree {// 哈夫曼树应用。石子合并求最小体力消耗
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[2 * N - 1];
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
int i, j, k1 = -1, k2 = -1, min1, min2, sum = 0;
for (i = N; i < 2 * N - 1; i++) {
min1 = min2 = Integer.MAX_VALUE;
for (j = 0; j < i; j++) {
if (arr[j] != -1) {
if (min1 > arr[j]) {
min2 = min1;min1 = arr[j];
k2 = k1;k1 = j;
} else if (min2 > arr[j]) {
min2 = arr[j];k2 = j;
}
}
}
arr[i] = min1 + min2;
sum += arr[i];
arr[k1] = arr[k2] = -1;
}
System.out.println(sum);
}
}
2.
二叉树中常见的面试题