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

    题目描述

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

    树中至少有 2 个节点。

    题目描述

    注意利用二叉搜索树的特点,中序遍历是有序的,而有序数组中两节点差的最小值即是任意两相邻节点差值的最小值。
    中序遍历二叉搜索树时,使用pre记录前一个节点,比较当前节点与pre的差值和当前记录的最小值,最终获得最小值。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        int pre;
        int res;
    
        private void dfs(TreeNode root) {
            if (root == null) {
                return;
            }
    
            dfs(root.left);
            if (pre == -1) {
                pre=root.val;
            } else {
                res = Math.min(res,root.val-pre);
                pre=root.val;
            }
            dfs(root.right);
        }
    
        public int getMinimumDifference(TreeNode root) {
            pre=-1;
            res=Integer.MAX_VALUE;
            dfs(root);
            return res;
        }
    }
    
  • 相关阅读:
    C++ 中的深入浅拷贝和深拷贝
    C++ 引用小问题
    6-10
    6-8
    6-7
    6-4
    6-3
    6-1
    5-31
    COMException 依赖服务或组无法启动(0x8007042C)处理办法
  • 原文地址:https://www.cnblogs.com/hunter-w/p/13806406.html
Copyright © 2011-2022 走看看