Leetcode
2020.05.04 09:08
872. Leaf-Similar Trees
조회 수 779 추천 수 0 댓글 0
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
and200
nodes. - Both of the given trees will have values between
0
and200
/** * 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){ list.add(node); } } }
[문제] https://leetcode.com/problems/leaf-similar-trees/