1457. Pseudo-Palindromic Paths in a Binary Tree

Link

Solution

用物件來進行判別結果時,要有backtrace的動作,否則前個子樹的結果物件會影響到另一個子樹的判別結果

 int count = 0;
    public int pseudoPalindromicPaths (TreeNode root) {
        Set<Integer> set = new HashSet<>();
        dfs(set, root);
        return count;
    }
    
    public void dfs(Set<Integer> set, TreeNode node){
        if(node == null) return;
        
        if(set.contains(node.val)){
            set.remove(node.val);
        }else{
            set.add(node.val);
        }
        if(node.left == null && node.right == null)
        {
            if(set.size() <= 1){
                count++;
            }
        }
        dfs(set, node.left);
        dfs(set, node.right);
        
        //backTrace
        if(set.contains(node.val)){
            set.remove(node.val);
        }else{
            set.add(node.val);
        }
    }

Last updated

Was this helpful?