春节刷题day5:[LeetCode:122、104、226、617、543]

春节刷题day5:LeetCode

122. 买卖股票的最佳时机 II

104. 二叉树的最大深度

226. 翻转二叉树

617. 合并二叉树

543. 二叉树的直径


122. 买卖股票的最佳时机 II

class Solution {
    
    
public:
    int maxProfit(vector<int>& prices) {
    
    
        int ans = 0;
        for(int i = 1; i < prices.size(); i++){
    
    
            if(prices[i] > prices[i - 1]) ans += prices[i] - prices[i - 1];
        }
        return ans;
    }
};

104. 二叉树的最大深度

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    
    
public:
    int maxDepth(TreeNode* root) {
    
    
        if(root == NULL) return 0;
        return max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
    }
};

226. 翻转二叉树

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    
    
public:
    TreeNode* invertTree(TreeNode* root) {
    
    
        if(root == NULL) return NULL;
        swap(root -> right, root -> left);
        invertTree(root -> right);
        invertTree(root -> left);
        return root;
    }
};

617. 合并二叉树

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    
    
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
    
    
        if(root1 == NULL) return root2;
        if(root2 == NULL) return root1;
        TreeNode* ans = new TreeNode(0);
        ans -> val = root1 -> val + root2 -> val;
        ans -> left = mergeTrees(root1 -> left, root2 -> left);
        ans -> right = mergeTrees(root1 -> right, root2 -> right);
        return ans;
    }
};

543. 二叉树的直径

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
    
    
public:
    int ans = 0;
    int depth(TreeNode* root){
    
    
        if(root == NULL) return 0;
        int l = depth(root -> left);
        int r = depth(root -> right);
        ans = max(ans, l + r);
        return max(l, r) + 1;
    }
    int diameterOfBinaryTree(TreeNode* root) {
    
    
        depth(root);
        return ans;
    }
};

未完待续······。

猜你喜欢

转载自blog.csdn.net/shangzhengyu/article/details/113779169