104. 二叉树的最大深度+100.相同的树+965.单值二叉树

目录

一、二叉树的最大深度

(一)题目

(二)代码

二、相同的树

(一)题目

(二)举例

(三)代码

三、单值二叉树

(一)题目

(二)举例

(三)代码


一、二叉树的最大深度

104. 二叉树的最大深度 - 力扣(LeetCode)

(一)题目

104. 二叉树的最大深度+100.相同的树+965.单值二叉树_第1张图片

(二)代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


int maxDepth(struct TreeNode* root){
    if(root == NULL)
    return 0;

    if(root->left ==NULL&&root->right == NULL)
     return 1;

     int leftH=maxDepth(root->left);
     int rightH=maxDepth(root->right);

     return leftH>rightH?leftH+1:rightH+1;

}

二、相同的树

 100. 相同的树 - 力扣(LeetCode)

(一)题目

104. 二叉树的最大深度+100.相同的树+965.单值二叉树_第2张图片

(二)举例

104. 二叉树的最大深度+100.相同的树+965.单值二叉树_第3张图片

(三)代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    if(p == NULL && q == NULL)
      return true;
      
    if(p != NULL &&q != NULL)
    {
        if(p->val != q->val)
          return false;
    }
    
    if(p == NULL || q == NULL)
      return false;

    return isSameTree(p->left,q->left) 
    && isSameTree(p->right,q->right);
}

三、单值二叉树

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

(一)题目

104. 二叉树的最大深度+100.相同的树+965.单值二叉树_第4张图片

(二)举例

104. 二叉树的最大深度+100.相同的树+965.单值二叉树_第5张图片

(三)代码

思路:比较父亲结点与左右孩子结点是否相同,如果都相同,递归继续

/**
 * 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 != NULL)
     {
         if(root->left->val != root->val)
             return false;
     }
      
    if(root->right != NULL)
     {
         if(root->right->val != root->val)
             return false;
     }
     
     return isUnivalTree(root->left) && isUnivalTree(root->right);
}

你可能感兴趣的:(牛客/力扣,c++,leetcode,c语言)