今日算法: 二叉搜索树

思路:二叉搜索树,已经有序,将树放进数组中,然后进行比较,

cpp 复制代码
class Solution {
public:
vector<int> vec;
void traversal(TreeNode*root)
{
    if(root==nullptr) return;

    traversal(root->left);
    vec.push_back(root->val);
    traversal(root->right);
}
    int getMinimumDifference(TreeNode* root) {
        //用一个vector存有序数组,进行临近比较;
        traversal(root);
        if(vec.size()<2) return 0;
        int result = INT_MAX;
        for(int i=1;i<vec.size();i++)
        {
            result=min(result,vec[i]-vec[i-1]);
        }
        return result;
    }
};

思路:在中序遍历时,我们可以直接进行比较,只不过需要记录前一个节点

cpp 复制代码
class Solution {
public:
int result=INT_MAX;
TreeNode*pre=NULL;
void traversal(TreeNode*root)
{
        if(root==NULL) return;
        traversal(root->left);//左
        if(pre!=nullptr)
        {
            result=min(result,root->val-pre->val);//中
        }
        pre=root;
        traversal(root->right);
}
    int getMinimumDifference(TreeNode* root) {
        //用一个vector存有序数组,进行临近比较;
        traversal(root);
        
        return result;
    }
};

使用迭代法:用栈进行,记住前后的就行

cpp 复制代码
class Solution {
public:

    int getMinimumDifference(TreeNode* root) {
     //使用栈进行遍历
     stack<TreeNode*> st;
     TreeNode*cur=root;
     TreeNode*pre=nullptr;
     int result=INT_MAX;
     while(cur!=nullptr||!st.empty())
     {
        if(cur!=nullptr)//不为空入栈
        {
                st.push(cur);
                cur=cur->left;
        }
        else//为空
        {
            cur=st.top();
            st.pop();
            if(pre!=nullptr)
            {
                result=min(result,cur->val-pre->val);
            }
            pre=cur;
            cur=cur->right;
        }
     }
        
        return result;
    }
};
相关推荐
北域码匠41 分钟前
Karatsuba乘法超详细解析(原理+流程+性能分析+纯原生C#无第三方库完整实现)
算法·c#·大数乘法·高精度计算·数据结构与算法·分治算法·karatsuba 乘法
fpcc1 小时前
数据结构和算法—数学的应用
数据结构·c++·算法
皓月斯语1 小时前
B4451 [GESP202512 四级] 建造 题解
数据结构·c++·算法·题解
z小猫不吃鱼2 小时前
模型剪枝经典论文精读:DepGraph: Towards Any Structural Pruning
算法·机器学习·剪枝
Ulyanov3 小时前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头
牧以南歌〆3 小时前
数据结构<八>链式队列
c语言·数据结构·算法
Reart3 小时前
Leetcode 188.买卖股票的最佳时机4(718)
后端·算法
2601_950760793 小时前
BCMA:急性髓系白血病免疫治疗的新型可行靶点
人工智能·算法·蛋白
Reart3 小时前
Leetcode 123.买卖股票的最佳时期3(内有随心谈,718)
后端·算法
可编程芯片开发4 小时前
基于RMDCFT算法的天基雷达空间机动目标检测方法MATLAB仿真,对比FRFT和DFT算法
算法