[Leetcode -2236. Determine si el nodo raíz es igual a la suma de los nodos secundarios -2331. Calcule el valor de un árbol binario booleano]

Leetcode -2236. Determinar si el nodo raíz es igual a la suma de los nodos secundarios

Pregunta: Se le proporciona la raíz del nodo raíz de un árbol binario. El árbol binario consta de exactamente 3 nodos: el nodo raíz, el nodo secundario izquierdo y el nodo secundario derecho.
Si el valor del nodo raíz es igual a la suma de los dos valores del nodo secundario, devuelve verdadero; de lo contrario, devuelve falso.

Ejemplo 1:
Insertar descripción de la imagen aquí

Entrada: raíz = [10, 4, 6]
Salida: verdadero
Explicación: Los valores del nodo raíz, subnodo izquierdo y subnodo derecho son 10, 4 y 6 respectivamente.
Como 10 es igual a 4 + 6, devuelve verdadero.

Ejemplo 2:
Insertar descripción de la imagen aquí

Entrada: raíz = [5, 3, 1]
Salida: falso
Explicación: Los valores del nodo raíz, subnodo izquierdo y subnodo derecho son 5, 3 y 1 respectivamente.
Como 5 no es igual a 3 + 1, se devuelve falso.

Consejo:
el árbol solo contiene el nodo raíz, el nodo secundario izquierdo y el nodo secundario derecho.

  • 100 <= Valor.nodo <= 100

Idea : Regrese directamente para determinar si el valor de la raíz es igual a la suma del valor del nodo izquierdo y el nodo derecho;

		bool checkTree(struct TreeNode* root)
		{
		    //直接返回判断根的值是否等于左节点和右节点 val 之和
		    return root->val == root->left->val + root->right->val;
		}

Leetcode -2331 Calculando el valor de un árbol binario booleano

Pregunta: Le doy la raíz de un árbol binario completo. Este árbol tiene las siguientes características:

Los nodos hoja tienen un valor de 0 o un valor de 1, donde 0 representa Falso y 1 representa Verdadero.
Los nodos que no son hoja tienen un valor de 2 o un valor de 3, donde 2 representa OR lógico y 3 representa AND lógico.
El valor de un nodo se calcula de la siguiente manera:

Si el nodo es un nodo hoja, el valor del nodo es él mismo, Verdadero o Falso.
De lo contrario, se calculan los valores de nodo de ambos hijos y luego se aplica el operador de ese nodo a los dos valores secundarios.
Devuelve el valor de la operación booleana de la raíz del nodo raíz.

Un árbol binario completo es un árbol binario en el que cada nodo tiene 0 o 2 hijos.
Los nodos hoja son nodos que no tienen hijos.

Ejemplo 1:
Insertar descripción de la imagen aquí

Entrada: raíz = [2, 1, 3, nulo, nulo, 0, 1]
Salida: verdadero
Explicación: La figura anterior muestra el proceso de cálculo.
El valor del nodo de operación AND es False AND True = False.
El valor del nodo de operación OR es Verdadero O Falso = Verdadero.
El valor del nodo raíz es Verdadero, por lo que devolvemos verdadero.

Ejemplo 2:
Entrada: raíz = [0]
Salida: falso
Explicación: El nodo raíz es un nodo hoja y el valor es falso, por lo que devolvemos falso.

Consejo:
el número de nodos en el árbol está entre [1, 1000].
0 <= Node.val <= 3
El número de hijos de cada nodo es 0 o 2.
El valor de los nodos hoja es 0 o 1.
Los nodos que no son hoja tienen un valor de 2 o 3.

Idea : Si val == 2 o 3, devuelve la operación lógica correspondiente al subárbol izquierdo y al subárbol derecho, si es 0 o 1, devuelve falso o verdadero;

		bool evaluateTree(struct TreeNode* root)
		{
		    //节点的值为1,返回true
		    if (root->val == 1)
		        return true;
		
		    //节点的值为0,返回false
		    if (root->val == 0)
		        return false;
		
		    //节点的值为2,将左子树和右子树进行逻辑或计算
		    if (root->val == 2)
		        return evaluateTree(root->left) || evaluateTree(root->right);
		
		    //节点的值为3,将左子树和右子树进行逻辑与计算
		    return evaluateTree(root->left) && evaluateTree(root->right);
		}

Supongo que te gusta

Origin blog.csdn.net/YoungMLet/article/details/131329594
Recomendado
Clasificación