三叉树节点求和 58集团23校招算法工程师卷

22.

三叉树节点求和

已知一棵三叉树有n(1<=n<=16)层节点(其中根节点算第一层),每个节点对应一个数值k0<=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);
    }
}

全部评论

相关推荐

2 1 评论
分享
牛客网
牛客企业服务