1. 程式人生 > 其它 >HashMap原始碼分析 保姆式教程 三

HashMap原始碼分析 保姆式教程 三

技術標籤:# 遇到的演算法演算法二叉樹dfs葉子相似的樹

如果有兩棵二叉樹的葉值序列是相同,那麼我們就認為它們是 葉相似 的。

如果給定的兩個頭結點分別為 root1 和 root2 的樹是葉相似的,則返回 true;否則返回 false

    public boolean leafSimilar(TreeNode root1, TreeNode root2) {
        List<Integer> leaves1 = new ArrayList();
        List<Integer> leaves2 = new ArrayList();
        dfs(root1, leaves1);
        dfs(root2, leaves2);
        return leaves1.equals(leaves2);
    }

    public void dfs(TreeNode node, List<Integer> leafValues) {
        if (node != null) {
            if (node.left == null && node.right == null)
                leafValues.add(node.val);
            dfs(node.left, leafValues);
            dfs(node.right, leafValues);
        }
    }