leetcode 872、葉子相似的樹(dfs)

請考慮一顆二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成一個 葉值序列 。
在這裏插入圖片描述
舉個例子,如上圖所示,給定一顆葉值序列爲 (6, 7, 4, 9, 8) 的樹。

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

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


思路:

基礎的深度優先遍歷。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    List<Integer> list1 = new ArrayList<>();
    List<Integer> list2 = new ArrayList<>();
    public boolean leafSimilar(TreeNode root1, TreeNode root2) {
        dfs(root1, list1);
        dfs(root2, list2);
        return list1.equals(list2); //第一反應應該要去查一下是否有相應函數,而不是寫邏輯
    }
    
    private void dfs(TreeNode node, List<Integer> list) {
        if (node == null) return ;
        if (node.left == null && node.right == null) 
            list.add(node.val);
        dfs(node.left, list);
        dfs(node.right, list);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章