zoukankan      html  css  js  c++  java
  • [leetCode]530. 二叉搜索树的最小绝对差

    题目

    链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst

    给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

    示例:
    
    输入:
    
       1
        
         3
        /
       2
    
    输出:
    1
    
    解释:
    最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
    

    提示:
    树中至少有 2 个节点。

    递归

    二叉搜索树是有序的,其中序遍历是一个有序数组,如果求一个有序数组的最小差值就很容易。因此可以将二叉搜索树转化为有序数组后再求最小的差值。但其实在遍历二叉树时通过一个变量记录前一个节点就能在遍历时计算差值并不断更新。

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

    迭代

    使用栈来模拟中序遍历的过程.

    class Solution {
        public int getMinimumDifference(TreeNode root) {
            int minValue = Integer.MAX_VALUE; 
            TreeNode cur = root;
            TreeNode pre = null;
            LinkedList<TreeNode> stack = new LinkedList<>();
            while (cur != null || !stack.isEmpty()) {
                if (cur != null) {
                    stack.push(cur);
                    cur = cur.left;
                } else {
                    cur = stack.pop();
                    if (pre != null) {
                        minValue = Math.min(minValue, cur.val - pre.val);
                    }
                    pre = cur;
                    cur = cur.right;
                }
            }
            return minValue;
        }
    }
    
  • 相关阅读:
    select 1 from ... sql语句中的1代表什么意思?
    装饰者模式
    Dao层抽取BaseDao公共方法
    DBUtils工具类
    java Page分页显示
    QTP
    Gym 100513F Ilya Muromets(前缀和)
    AcWing1165 单词环(01分数规划)
    AcWing904 虫洞(spfa判负环)
    AcWing1148 秘密的奶牛运输(次小生成树)
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13925446.html
Copyright © 2011-2022 走看看