0
点赞
收藏
分享

微信扫一扫

算法学习:530.二叉搜索树的最小绝对差

非宁静不致远 2022-03-30 阅读 46

二叉搜索树的最小绝对差

思路

二叉搜索树可是有序的。
二叉搜索树采用中序遍历,其实就是一个有序数组。
把二叉搜索树转换成有序数组,然后遍历一遍数组,就统计出来最小差值了。

递归代码

class Solution{
	TreeNode pre = null; // 记录上一个遍历的结点
	int result = Integer.MAX_VALUE;
	public int getMinimumDifference(TreeNode root) {
	 	traversal(root);
	 	return result;
	 }
	private 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);
	} 
}

迭代代码

class Solution{
	public int getMinimumDifference(TreeNode root) {
		TreeNode pre = null;
		Stack<TreeNode> stack = new Stcak<>();
		if(root == null){
			return 0;
		}
		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;
	}	
}
举报

相关推荐

0 条评论