알고리즘 | 면접 문제 26. 나무의 서브 구조

4154 단어 Leetcode
이 진 트 리 A 와 B 두 그루 를 입력 하여 B 가 A 의 서브 구조 인지 아 닌 지 를 판단 한다.(빈 나 무 는 임의의 나무의 서브 구조 가 아니 라 는 약속)
B 는 A 의 서브 구조, 즉 A 에 B 와 같은 구조 와 노드 값 이 나타난다.
예 를 들 어 주어진 나무 A: 3 / 45 / 12 주어진 나무 B: 4 / 1 은 true 로 돌아 갑 니 다. B 와 A 의 키 나 무 는 같은 구조 와 노드 값 을 가지 고 있 기 때 문 입 니 다.
예시 1: :A = [1,2,3], B = [3,1] :false
예시 2: :A = [3,4,5,1,2], B = [4,1] :true
제한:0 <= <= 10000
문제 풀이:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(A == null || B == null)  return false;
        return dfs(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);
    }
    private boolean dfs(TreeNode A, TreeNode B) {
        if(A == null)  return false;
        if(B == null)  return true;
        return A.val == B.val && dfs(A.left, B.left) && dfs(A.right, B.right);
    }
}

좋은 웹페이지 즐겨찾기