三叉树节点求和 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); } }