|
14 | 14 | * }
|
15 | 15 | */
|
16 | 16 | class Solution {
|
17 |
| - public boolean leafSimilar(TreeNode root1, TreeNode root2) { |
18 |
| - return getLeaves(root1).equals(getLeaves(root2)); |
19 |
| - } |
20 |
| - |
21 |
| - private List<Integer> getLeaves(TreeNode root) { |
22 |
| - Stack<TreeNode> stack = new Stack<>(); |
23 |
| - List<Integer> leaves = new ArrayList<>(); |
24 |
| - while (root != null) { |
25 |
| - stack.push(root); |
26 |
| - root = root.left; |
| 17 | + public boolean leafSimilar(TreeNode root1, TreeNode root2) { |
| 18 | + StringBuilder leavesOne = new StringBuilder(); |
| 19 | + StringBuilder leavesTwo = new StringBuilder(); |
| 20 | + populateLeaves(root1, leavesOne); |
| 21 | + populateLeaves(root2, leavesTwo); |
| 22 | + return leavesOne.toString().equals(leavesTwo.toString()); |
27 | 23 | }
|
28 |
| - while (!stack.isEmpty()) { |
29 |
| - TreeNode removed = stack.pop(); |
30 |
| - if (removed.left == null && removed.right == null) { |
31 |
| - leaves.add(removed.val); |
32 |
| - } else { |
33 |
| - TreeNode rightNode = removed.right; |
34 |
| - while (rightNode != null) { |
35 |
| - stack.push(rightNode); |
36 |
| - rightNode = rightNode.left; |
| 24 | + |
| 25 | + private void populateLeaves(TreeNode root, StringBuilder leaves) { |
| 26 | + if (root == null) { |
| 27 | + return; |
37 | 28 | }
|
38 |
| - } |
| 29 | + if (root.left == null && root.right == null) { |
| 30 | + leaves.append(root.val).append(","); |
| 31 | + return; |
| 32 | + } |
| 33 | + populateLeaves(root.left, leaves); |
| 34 | + populateLeaves(root.right, leaves); |
39 | 35 | }
|
40 |
| - return leaves; |
41 |
| - } |
42 | 36 | }
|
0 commit comments