• My Thirty-Ninth Page - 二叉搜索树的最小绝对差 - By Nicolas


    这篇page是针对leetcode上的530.二叉搜索树的最小绝对差所写的。小尼先简单的给大家说明一下这道题的意思,给出一个二叉搜索树的根节点root,返回树中任意两个不同节点之间的最小差值。

    这边小尼先给出迭代法的解法:

    class Solution {
        TreeNode pre;
        Stack stack;
        public int getMinimumDifference(TreeNode root) {
            if(root == null){ return 0;}
            stack = new Stack<>();
            TreeNode cur = root;
            int result = Integer.MAX_VALUE;
            while(cur != null || !stack.isEmpty()){
                if(cur != null){
                    stack.push(cur);
                    cur = cur.left;
                }else{
                    cur = stack.pop();
                    if(pre != null){
                        result = Math.min(result,cur.val - pre.val);
                    }
                    pre = cur;
                    cur = cur.right;
                }
            }
            return result;
        }
    }

    这边采用的方法就是我们先遍历到左子树的最左边的元素,然后我们再采取压栈出栈的操作对栈内的元素进行对应的操作,这里买呢定义了两个指针,一个pre和一个cur,我们的cur先到达最左边的元素,然后我们的pre再记录上一个元素,小尼觉得这道题最巧妙的就是我们的cur的跳转,在这里我们的cur=stack.pop(),这一句话可以使得cur的值可以有一个上跳的结果。

    接下来小尼也给出递归的方法:

    class Solution {
        TreeNode pre;
        int result = Integer.MAX_VALUE;
        public int getMinimumDifference(TreeNode root) {
            if(root == null) return 0;
            traversal(root);
            return result;
        }
        public void traversal(TreeNode root){
            if(root == null) return;
            traversal(root.left);
            if(pre != null){
                result = Math.min(result,root.val - pre.val);
            }
            pre = root;
            traversal(root.right);
        }
    }

    这边就是满足递归三要素,传入参数、终止条件、每个递归执行的顺序

  • 相关阅读:
    【解锁未来】OpenAI:从创始到GPT4的发展
    C#(三十)之C#comboBox ListView treeView
    powershell中的常用软件打开命令
    JPEG公布智能图像编码提案结果,火山引擎排名主观质量评测第一
    常用设计模式
    安卓抓包之小黄鸟
    1.1、Python基础-注释、变量声明及命名规则、数据类型
    数一独有:向量代数和空间解析几何
    记录电脑快捷键
    [踩坑]特征值计算
  • 原文地址:https://blog.csdn.net/weixin_51658729/article/details/127641270