首页 > 其他分享 >代码随想录day21 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

代码随想录day21 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

时间:2023-09-27 11:45:39浏览次数:32  
标签:pre TreeNode cur 随想录 二叉 搜索 result NULL root

530. 二叉搜索树的最小绝对差

class Solution {
private:
    int result = INT_MAX;
    TreeNode* pre = NULL;
    void traversal(TreeNode* cur){
        if (cur == NULL)    return;
        traversal(cur->left); //左
        if(pre != NULL){        //中
            result = min(result, cur->val - pre->val);
        }
        pre = cur;
        traversal(cur->right);    //右
    }
public:
    int getMinimumDifference(TreeNode* root) {
        traversal(root);
        return result;
    }
};

501.二叉搜索树中的众数

class Solution {

private:
    int maxCount = 0;
    int count = 0;
    TreeNode* pre = NULL;
    vector<int> result;

    void searchBST(TreeNode* cur){
        if(cur == NULL) return;

        searchBST(cur->left);   //左

        //中
        if(pre == NULL){
            count = 1;
        }
        else if(pre->val == cur->val){
            count++;
        }
        else{   // pre != NULL && pre->val != cur->val
            count = 1; 
        }
        pre = cur;  //移动指针

        if(count == maxCount){
            result.push_back(cur->val);
        }

        if(count > maxCount){
            maxCount = count;
            result.clear();
            result.push_back(cur->val);
        }

        searchBST(cur->right);  //右
        return;

    }

public:
    vector<int> findMode(TreeNode* root) {
        count = 0;
        maxCount = 0;
        pre = NULL;
        result.clear();

        searchBST(root);
        return result; 
    }
};

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

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if(root == q || root == p || root == NULL)  return root;
        
        TreeNode* left = lowestCommonAncestor(root->left, p ,q);    //左
        TreeNode* right = lowestCommonAncestor(root->right, p, q);  //右

        //中
        if(left != NULL && right != NULL)   return root;
        if(left == NULL && right != NULL)   return right;
        else if(left != NULL && right == NULL)  return left;
        else{   // (left == NULL && right == NULL)
            return NULL;
        }
    }
};

标签:pre,TreeNode,cur,随想录,二叉,搜索,result,NULL,root
From: https://www.cnblogs.com/lycnight/p/17732327.html

相关文章

  • Python爬虫-爬取百度搜索结果页的网页标题及其真实网址
    共两个依赖的需提前安装的第三方库:requests和bs4库cmd命令行输入安装requests库:pip3install-ihttps://pypi.douban.com/simplerequests安装bs4库:pip3install-ihttps://pypi.douban.com/simplebeautifulsoup4 本微项目源文件下载地址:https://wwuw.lanzouj.com/i1Au51......
  • 500_想在iPad上学习?这个PDF电子书搜索引擎实在太好用
    这是一篇原发布于2020-02-2909:50:00得益小站的文章,备份在此处。前段时间,各家出版社纷纷“用知识抗击疫情”,开放了自家的图书资源来倡导读者在家学习。轶哥也下载了许多电子书。不得不说原版的电子书质量就是高,这些电子书可以完美的标注,复制;相较于影印版PDF体积更小,阅读体验也......
  • 二叉树的四种遍历方式
    前序遍历:从根节点开始,然后按照当前结点,左子结点,右子结点的顺序遍历中序遍历:从最左边的子结点开始,然后按照左子结点,当前结点,右子结点的顺序遍历(左中右)后序遍历:从最左边的子结点开始,然后按照左子结点,右子结点,当前结点的顺序遍历(左右中)层序遍历:从根节点开始一层一层的遍历......
  • 基于vue制作搜索高亮popsearch组件
    ......
  • 链式二叉树的遍历
    如果使用动态创建二叉树需要使用递归,故使用静态的方式创建二叉树代码如下://链式二叉树///使用静态创建二叉树#include<stdio.h>#include<malloc.h>//定义二叉树的数据结构typedefstructbinaryTree{ charvalue;//存储的值 structbinary......
  • ## day16 - 二叉树part03
    day16-二叉树part03力扣104.二叉树的最大深度思路:最大深度,即为顶点高度。如果想求高度,人类思维的角度,就是从底层开始算,往上一层+1,加到顶点就是高度,也就是最大深度。因此要用后序遍历,这样可以左右根的顺序进行遍历,从而一层一层向上返回结果,返回到根节点的时候就计算出来了最......
  • vue3 模糊搜索 不区分大小写 多选框 element plus
    ```javascript<divclass="select-part"ref="selectRef"><divclass="check-type"><inputtype="text"class="check-type-title":placeholder="placeholder"@focus="onFo......
  • 随想录Day7|454. 四数相加Ⅱ、383. 赎金信、15. 三数之和、18. 四数之和
    随想录Day7|454.四数相加Ⅱ、383.赎金信、15.三数之和、18.四数之和 454.四数相加Ⅱ文章&视频讲解给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+......
  • 随想录Day5|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
    随想录Day5|242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和 242.有效的字母异位词文章&视频讲解给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。1......
  • 谷歌搜索引擎排名的因素之一署名日期
    署名日期是指Google估计的网页更新或发布日期。如果Google能确定您的网页或视频的署名日期,并且认为这些信息对用户有用,就会在Google搜索结果中显示这些信息。您可以提供相关信息,帮助Google确定署名日期。Google不会仅依赖1种因素来确定日期,因为所有因素都可能会出现问......