领扣LintCode算法问题答案-1746. 二叉搜索树结点最小距离

    科技2022-08-05  102

    领扣LintCode算法问题答案-1746. 二叉搜索树结点最小距离

    目录

    1746. 二叉搜索树结点最小距离描述样例 1:样例 2: 题解鸣谢

    1746. 二叉搜索树结点最小距离

    描述

    给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。

    二叉树的大小范围在 2 到 100。二叉树总是有效的,每个节点的值都是整数,且不重复。

    样例 1:

    输入: root = {4,2,6,1,3} 输出: 1 解释: 注意,root是树结点对象(TreeNode object),而不是数组。 给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \ 2 6 / \ 1 3 最小的差值是 1, 它是节点1和节点2的差值, 也是节点3和节点2的差值。

    样例 2:

    输入: root = {2,1} 输出: 1 解释: 注意,root是树结点对象(TreeNode object),而不是数组。 给定的树 {2,1} 可表示为下图: 2 / 1 最小的差值是 1, 它是节点1和节点2的差值。

    题解

    /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: a Binary Search Tree (BST) with the root node * @return: the minimum difference */ public int minDiffInBST(TreeNode root) { // Write your code here. int minDiff = Integer.MAX_VALUE; Integer pre = null; Stack<TreeNode> s = new Stack<>(); TreeNode n = root; while (n != null || !s.empty()) { while (n != null) { s.push(n); n = n.left; } if (!s.empty()) { n = s.pop(); if (pre != null) { int diff = Math.abs(n.val - pre); if (diff < minDiff) { minDiff = diff; } } pre = n.val; n = n.right; } } return minDiff; } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.009, SQL: 8