LeetCode 75: 872. Leaf-Similar Trees

김준수·2024년 3월 25일
0

LeetCode 75

목록 보기
34/63
post-custom-banner

Description

Consider all the leaves of a binary tree, from left to right order, the values of those leaves form a leaf value sequence.

Leaf Value Sequence Example

For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.


이진 트리의 모든 잎들을 왼쪽에서 오른쪽 순서로 고려할 때, 그 잎들의 값은 잎 값 시퀀스를 형성합니다.

Leaf Value Sequence Example

예를 들어, 위에 주어진 트리에서 잎 값 시퀀스는 (6, 7, 4, 9, 8)입니다.

두 이진 트리가 같은 잎 값 시퀀스를 가지고 있다면, 잎-유사(leaf-similar)로 간주됩니다.

두 주어진 트리의 머리 노드 root1root2가 잎-유사하면 true를 반환하세요.

예시 1:

Leaf Similar Trees Example 1

  • 입력: root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
  • 출력: true

예시 2:

Leaf Similar Trees Example 2

  • 입력: root1 = [1,2,3], root2 = [1,3,2]
  • 출력: false

제약 사항:

  • 각 트리의 노드 수는 [1, 200] 범위에 있을 것입니다.
  • 주어진 두 트리는 모두 [0, 200] 범위의 값을 가질 것입니다.

Solution

import java.util.Stack;

class Solution {
    public boolean leafSimilar(TreeNode root1, TreeNode root2) {
        Stack<Integer> root1Leaf = new Stack<>();
        getLeafNode(root1, root1Leaf);
        Stack<Integer> root2Leaf = new Stack<>();
        getLeafNode(root2, root2Leaf);

        if (root1Leaf.size() != root2Leaf.size())
            return false;

        while (!root1Leaf.isEmpty()) {
    		// Integer를 == 비교하면 -128 ~ 127 까지의 값만 비교가능
            if (!root1Leaf.pop().equals(root2Leaf.pop())) {
                return false;
            }
        }

        return true;
    }

    public void getLeafNode(TreeNode node, Stack<Integer> stack) {
    	//마지막 노드 일경우 push
        if (node.left == null && node.right == null) {
            stack.push(node.val);
        }
        if (node.left != null)
            getLeafNode(node.left, stack);
        if (node.right != null)
            getLeafNode(node.right, stack);
    }
}
post-custom-banner

0개의 댓글