LeetCode 75

Leaf-Similar Trees

Problem
LC 872
Topic
Tree DFS
File
official75_LC872LeafSimilarTrees.java
Path
pkg5leetcode/official75/official75_LC872LeafSimilarTrees.java
Package
pkg5leetcode.official75
Command
java pkg5leetcode/official75/official75_LC872LeafSimilarTrees.java
Approach
DFS collect leaf sequences; compare lists.
Complexity
Time O(n), Space O(n)

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/official75/official75_LC872LeafSimilarTrees.java
1package pkg5leetcode.official75;2 3/*4 * Leaf-Similar Trees | LC 8725 * APPROACH: DFS collect leaf sequences; compare lists.6 * COMPLEXITY: Time O(n), Space O(n)7 */8import java.util.*;9 10public class official75_LC872LeafSimilarTrees {11    /** Same shape as pkg5leetcode/common/TreeNode.java (nested for single-file runs). */12 13    static class TreeNode {14        int val;15        TreeNode left, right;16        TreeNode(int val) { this.val = val; }17    }18 19    static void leaves(TreeNode node, List<Integer> out) {20        if (node == null) return;21        if (node.left == null && node.right == null) { out.add(node.val); return; }22        leaves(node.left, out);23        leaves(node.right, out);24    }25 26    static boolean leafSimilar(TreeNode root1, TreeNode root2) {27        List<Integer> a = new ArrayList<>(), b = new ArrayList<>();28        leaves(root1, a);29        leaves(root2, b);30        return a.equals(b);31    }32 33    public static void main(String[] args) {34        TreeNode a = new TreeNode(3); a.left = new TreeNode(5); a.right = new TreeNode(1);35        a.left.left = new TreeNode(6); a.left.right = new TreeNode(2);36        TreeNode b = new TreeNode(3); b.left = new TreeNode(5); b.right = new TreeNode(1);37        b.left.left = new TreeNode(6); b.left.right = new TreeNode(2);38        check(leafSimilar(a, b), "case1");39        TreeNode c = new TreeNode(1); c.left = new TreeNode(2);40        TreeNode d = new TreeNode(1); d.right = new TreeNode(3);41        check(!leafSimilar(c, d), "case2");42        System.out.println("all tests passed");43    }44 45    static void check(boolean cond, String name) {46        if (!cond) throw new AssertionError("FAILED: " + name);47        System.out.println("  PASS " + name);48    }49}