Leetcode

872. Leaf-Similar Trees

by hooni posted May 04, 2020
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

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

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.

Constraints:

• Both of the given trees will have between `1` and `200` nodes.
• Both of the given trees will have values between `0` and `200`

```/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode() {}
*     TreeNode(int val) { this.val = val; }
*     TreeNode(int val, TreeNode left, TreeNode right) {
*         this.val = val;
*         this.left = left;
*         this.right = right;
*     }
* }
*/
class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
List<TreeNode> list1 = new ArrayList<>();
List<TreeNode> list2 = new ArrayList<>();

findLeaves(root1, list1);
findLeaves(root2, list2);

if(list1.size() != list2.size()){
return false;
}

int loop = list1.size();
for(int i=0; i<loop; i++){
TreeNode node1 = list1.get(i);
TreeNode node2 = list2.get(i);
//System.out.println(node1+" == "+node2);
if(node1.val != node2.val){
return false;
}
}

return true;
}

public void findLeaves(TreeNode node, List<TreeNode> list){
if(node == null){
return;
}

findLeaves(node.left, list);
findLeaves(node.right, list);

if(node.left == null && node.right == null){