day15

  1. 二叉搜素树的最小绝对差

/**

  • 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:
    Solution()
    :min(INT_MAX), pre(nullptr)
    {
    }
    void traversal(TreeNode cur)
    {
    if(cur == nullptr)
    {
    return;
    }
    traversal(cur->left);
    if(pre != nullptr)
    {
    if(min > cur->val - pre->val)
    {
    min = cur->val - pre->val;
    }
    }
    pre = cur;
    traversal(cur->right);
    }
    int getMinimumDifference(TreeNode
    root)
    {
    traversal(root);
    return min;
    }
    private:
    int min;
    TreeNode *pre;
    };
  1. 二叉搜索树中的众数

/**

  • 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:
    void traversal(TreeNode *cur)
    {
    if(cur == nullptr)
    {
    return;
    }
    traversal(cur->left);
    if(pre != nullptr)
    {
    if(pre->val == cur->val)
    {
    ++num;

     if(num > max)
     {
         max = num;
         value.clear();
         value.push_back(pre->val);
     }
     if(num == max)
     {
         value.push_back(pre->val);
     }
         }
         else
         {
             num = 1;
         }
     }
     else
     {
         num = 1;
     }
     pre = cur;
     
     traversal(cur->right);
    

    }
    vector findMode(TreeNode* root) {
    value.clear();
    traversal(root);
    return value;
    }
    private:
    int max = 0;
    int num = 0;
    vector value;
    TreeNode *pre = nullptr;
    };

  1. 二叉树的最近公共祖先

    /**

  • 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:
    TreeNode
    traversal(TreeNode *root, TreeNode p, TreeNode q)
    {
    if(root == nullptr)
    {
    return nullptr;
    }
    if(root == p || root == q)
    {
    return root;
    }
    TreeNode left = traversal(root->left, p, q);
    TreeNode right = traversal(root->right, p, q);
    if(left != nullptr && right != nullptr)
    {
    return root;
    }
    else if(left != nullptr && right == nullptr)
    {
    return left;
    }
    else if(left == nullptr && right != nullptr)
    {
    return right;
    }
    else
    {
    return nullptr;
    }
    }
    TreeNode
    lowestCommonAncestor(TreeNode
    root, TreeNode
    p, TreeNode
    q)
    {
    return traversal(root, p ,q);
    }
    };
posted @ 2024-09-08 21:11  ikun1111  阅读(21)  评论(0)    收藏  举报