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);
}
}