欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

530. 二叉搜索树的最小绝对差 中序遍历

程序员文章站 2022-04-24 20:46:15
...

530. 二叉搜索树的最小绝对差

难度:简单
利用二叉搜索树的性质,对二叉搜索树进行中序遍历,得到的结果是一个递增序列。每次记录下前一个的pre
中序遍历,根的前一个元素是左孩子,右孩子的前一个是根
题目描述
530. 二叉搜索树的最小绝对差 中序遍历
解题思路
整体就是按照中序遍历,记录前一个元素,然后更新最小值

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int min = Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
    	getMinimumDifferenceHelper(root,new TreeNode(min));
    	return min;
    }
    
    public TreeNode getMinimumDifferenceHelper(TreeNode root,TreeNode pre) {
    	if(root != null) {
    		pre = getMinimumDifferenceHelper(root.left,pre);
    		min = Math.min(min, Math.abs(pre.val-root.val));
    		pre = getMinimumDifferenceHelper(root.right,root);  //更新pre值   		
    	}
    	return pre;
    }
}

530. 二叉搜索树的最小绝对差 中序遍历
再笨一点的办法可以中序遍历一遍得到递增数组,然后挨个计算最小值

另外一种写法(783. 二叉搜索树节点最小距离)

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

530. 二叉搜索树的最小绝对差 中序遍历

相关标签: 力扣刷题笔记