原题链接: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);
}
}