Java aplicación LeetCode 572 sub-árbol a otro árbol (árbol que camina)

572. Otra sub-árbol del árbol

Dada no vacío binario s y dos t, y la prueba se incluye en s t subárboles que tienen la misma estructura y los valores de nodo. s de un subárbol incluyendo todos los descendientes de un nodo y el nodo s. s puede ser visto como su propio sub-árbol.

Ejemplo 1:
dado árbol s:

     3
    / \
   4   5
  / \
 1   2

Dado un árbol t:

   4 
  / \
 1   2

Devuelve cierto, porque t a s un subárbol y los nodos tienen los mismos valores de configuración.

Ejemplo 2:
dado árbol s:

     3
    / \
   4   5
  / \
 1   2
    /
   0

Dado un árbol t:

   4
  / \
 1   2

Volver falsa.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSubtree(TreeNode s, TreeNode t) {
        return isSame(s, t, false);
    }


    public boolean isSame(TreeNode s, TreeNode t, boolean flag){
        if(s==null && t==null) return true;
        else if(s!=null && t!=null){
            if(s.val == t.val){
                return (isSame(s.left, t.left, true) && isSame(s.right, t.right, true)) || isSame(s.left, t, false) || isSame(s.right, t, false);
            }else{
                if(flag) return false;
                else return isSame(s.left, t, false) || isSame(s.right, t, false);
            }
        }
        return false;
    }
}
Liberadas 1655 artículos originales · ganado elogios 20000 + · vistas 3,02 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105158664
Recomendado
Clasificación