LeetCode刷题分类之二叉树 965单值二叉树

1. 题目

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

示例 1:


示例1
输入:[1,1,1,1,1,null,1]
输出:true

示例2:


示例2
输入:[2,2,2,5,2]
输出:false

提示:

  • 给定树的节点数范围是[1, 100]
  • 每个节点的值都是整数,范围为[0, 99]

2. 思路

  1. 如果二叉树根节点为空,该树肯定不是单值二叉树
  2. 建立一个辅助函数helper(TreeNode node, int val),该函数的作用是判断给定节点的val,与给定的值是否相同,节点可以为空
  3. 用递归判断左右节点与根节点的值是否相同

3. 代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if(root == null)
            return false;
        return helper(root, root.val);
    }

    public boolean helper(TreeNode root, int val){
        if(root == null)
            return true;
        return root.val == val && helper(root.left, val) && helper(root.right,val);
    }        
}

你可能感兴趣的:(LeetCode刷题分类之二叉树 965单值二叉树)