LeetCode 965题详解 | 单值二叉树的“一统江湖”:如何判断所有节点值全等?
题目如下:
解题过程如下:
示例中,即便这个结点是空结点也返回true。
若根结点不为空,那么先判断它的左孩子结点里的值是否与根结点里的值相等(这里要先确保左孩子不为空,因为左孩子结点里的值是解引用操作),若不相等返回false,不用判断它的右孩子结点了;若相等,先确保右孩子不为空,再判断它的右孩子结点里的值是否与结点里的值相等。
若根结点里的值都与它的左右孩子结点里的值相等,则继续递归。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isUnivalTree(struct TreeNode* root) {
if (root == NULL)
{
return true;
}
if (root->left && root->left->val != root->val)
{
return false;
}
if (root->right && root->right->val != root->val)
{
return false;
}
return isUnivalTree(root->left) && isUnivalTree(root->right);
}