[LeetCode] 965. Univalued Binary Tree

原题链接:https://leetcode.com/problems/univalued-binary-tree/

1. 题目介绍

A binary tree is univalued if every node in the tree has the same value.
Return true if and only if the given tree is univalued.
如果一个二叉树全部节点的val值都是相同,那么我们称这个二叉树是univalued的。
写一个函数判断给定的二叉树是否是univalued二叉树。

Example 1:
在这里插入图片描述

Input: [1,1,1,1,1,null,1]
Output: true

Example 2:
在这里插入图片描述

Input: [2,2,2,5,2]
Output: false

Note:

The number of nodes in the given tree will be in the range [1, 100].
Each node’s value will be an integer in the range [0, 99].
节点的数量范围是[1,100]
节点的val值范围是[0,99]

2. 解题思路

DFS+递归
使用递归函数,判断每一个节点的val值是否和第一个节点的val值相同。如果不相同直接返回false,相同则继续递归判断左子节点和右子节点。

实现代码

/**
 * 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 true;
        }
        return helper(root,root.val);
    }
    
    public boolean helper(TreeNode root,int value){
        if(root == null){
            return true;
        }
        if(root.val != value){
            return false;
        }
        return helper(root.left,value) && helper(root.right,value);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值