1. 程式人生 > 實用技巧 >Leetcode 965單值二叉樹

Leetcode 965單值二叉樹

題目定義:

如果二叉樹每個節點都具有相同的值,那麼該二叉樹就是單值二叉樹。
只有給定的樹是單值二叉樹時,才返回 true;否則返回 false。
    
示例 1:
                            1
                          /  \
                         1     1
                        / \     \
                       1   1     1
輸入:[1,1,1,1,1,null,1]
輸出:true
    
示例 2:
                            2
                          /  \
                         2    2
                        / \   
                       5   2 
輸入:[2,2,2,5,2]
輸出:false

    
提示:
給定樹的節點數範圍是 [1, 100]。
每個節點的值都是整數,範圍為 [0, 99]。

遞迴方式:

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if(root == null)
            return true;
        return dfs(root,root.val);
    }
    private boolean dfs(TreeNode root,int value){
        if(root == null)
            return true;
        if(root.val != value)
            return false;
        return dfs(root.left,value) && dfs(root.right,value);
    }
}

迭代方式:

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if(root == null)
            return true;
        Queue<TreeNode> queue =new LinkedList<>();
        int value = root.val;
        queue.offer(root);
        while(queue.size() > 0){
            TreeNode node = queue.poll();
            if(node.val != value)
                return false;
            if(node.left != null)
                queue.offer(node.left);
            if(node.right != null)
                queue.offer(node.right);
        }
        return true;
    }
}

參考:

https://leetcode-cn.com/problems/univalued-binary-tree/submissions/