AI刷题-T75二叉树供暖题解

175 阅读1分钟

2024-10-22 22:51


import java.util.*;
public class Main {
    static int res = 0;

    static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int val) {
            this.val = val;
        }
    }

    public static int traverse(TreeNode root) {
        if (root == null) return 2;
        int left = traverse(root.left);
        int right = traverse(root.right);

        if (left == 2 && right == 2) return 0;
        if (left == 0 || right == 0) {
            res++;
            return 1;
        }
        if (left == 1 || right == 1) return 2;
        return -1;
    }

    public static int solution(int[] nodes) {
        res = 0;
        TreeNode root = buildTreeFromLevelOrder(nodes);
        if (traverse(root) == 0) res++;
        return res;
    }

    public static TreeNode buildTreeFromLevelOrder(int[] levelOrder) {
        if (levelOrder.length == 0) return null;
        TreeNode root = new TreeNode(levelOrder[0]);
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        int index = 1;
        while (!queue.isEmpty() && index < levelOrder.length) {
            TreeNode current = queue.poll();
            if (levelOrder[index]!= 0) {
                current.left = new TreeNode(levelOrder[index]);
                queue.add(current.left);
            }
            index++;
            if (index < levelOrder.length && levelOrder[index]!= 0) {
                current.right = new TreeNode(levelOrder[index]);
                queue.add(current.right);
            }
            index++;
        }
        return root;
    }


    public static void main(String[] args) {
        //  You can add more test cases here
        int[] nodes1 = {1, 1, 0, 1, 1};
        int[] nodes2 = {1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1};
        int[] nodes3 = {1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1};

        System.out.println(solution(nodes1) == 1);
        System.out.println(solution(nodes2) == 3);
        System.out.println(solution(nodes3) == 3);
    }
}