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;
        }
    }
    
  • 相关阅读:
    NoSQL学习1
    inno setup 软件打包
    cmapx 保存绘制好的图层
    qt之菜单栏的创建
    qt 软件打包
    可恶的 0xc0000005异常
    成长
    msChart组件安装与编程
    qt 工具下的dump工具导出文档出现异常解决方案
    qt 环境下mapx组件的鼠标跟踪
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13925446.html
Copyright © 2011-2022 走看看