[C题目]力扣965. 单值二叉树

965. 单值二叉树 - 力扣(LeetCode)

思路: 分而治之,判断[以root为根节点的树]是否是单值二叉树也就是判断[两个子树]是否为单值二叉树,并且子节点是否和根节点的值相同。

bool isUnivalTree(struct TreeNode* root)
{
    //如果以root为根节点的树为空树,则该树认为为单值二叉树。
    if(root==NULL)
        return true;

    //如果两个子树不是单值二叉树,以root为根节点的树也不是单值二叉树。
    bool ret1=isUnivalTree(root->left);
    bool ret2=isUnivalTree(root->right);
    if(ret1==false)
        return false;
    if(ret2==false)
        return false;
    
    //如果子节点不为空,并且子节点的值与root节点的值不同,则不是单值二叉树。
    if((root->left!=NULL)&&(root->val!=root->left->val))
        return false;
    if((root->right!=NULL)&&(root->val!=root->right->val))
        return false;

    return true;
}

 

你可能感兴趣的:(leetcode,算法)