题目描述:
思路
选用前序的思路来写这道题目,通过将问题分为子问题和条件,完成递归。
解题过程
单值二叉树需要比较根和子树的值,如果二者值不相等则返回false,根和左右子树的值都相等则返回true,最后使用递归判断左右子树,将树延申下去。
代码实现:
/**
* 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);
}