Java實現 LeetCode 783 二叉搜索樹節點最小距離(遍歷)

783. 二叉搜索樹節點最小距離

給定一個二叉搜索樹的根節點 root,返回樹中任意兩節點的差的最小值。

示例:

輸入: root = [4,2,6,1,3,null,null]
輸出: 1
解釋:
注意,root是樹節點對象(TreeNode object),而不是數組。

給定的樹 [4,2,6,1,3,null,null] 可表示爲下圖:

      4
    /   \
  2      6
 / \    
1   3  

最小的差值是 1, 它是節點1和節點2的差值, 也是節點3和節點2的差值。

注意:

二叉樹的大小範圍在 2 到 100。
二叉樹總是有效的,每個節點的值都是整數,且不重複。
本題與 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    Integer prev = null, ans = Integer.MAX_VALUE;

    public int minDiffInBST(TreeNode root) {
        test(root);
        return ans;
    }

    public void test(TreeNode treeNode) {
        if (treeNode == null) {
            return;
        }
        test(treeNode.left);
        if (prev != null) {
            ans = Math.min(ans, treeNode.val - prev);
        }
        prev = treeNode.val;
        test(treeNode.right);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章