三叉树节点求和 58集团23校招算法工程师卷
22.
三叉树节点求和
已知一棵三叉树有n(1<=n<=16)层节点(其中根节点算第一层),每个节点对应一个数值k(0<=k<=100),请编程计算奇数层所有节点的和。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String line = in.nextLine();
String[] parts = line.split(",");//原来是字符串格式的变量啊
int sum = 0;
// 初始化变量
int levelNodes = 1; // 当前层的节点数,根节点层为1
int count = 0; // 计数当前处理的节点数
boolean addNodes = true; // 是否累加当前节点值的标志
for (String part : parts) {
if (!part.equals("None")) {
int a = Integer.parseInt(part);
if (addNodes) {
sum += a; // 累加奇数层节点的值
}
}
count++;
// 如果count等于当前层的节点数,更新变量进入下一层
if (count == levelNodes) {
count = 0; // 重置计数器,这就是我一直想写没写出来的
addNodes = !addNodes; // 奇数层累加,偶数层不累加,因此切换标志
levelNodes *= 3; // 下一层的节点数是当前层的3倍
}
}
System.out.println(sum);
}
}
查看14道真题和解析
