日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[LC]783题 二叉搜索树结点最小距离(中序遍历)

發布時間:2024/10/8 49 如意码农
生活随笔 收集整理的這篇文章主要介紹了 [LC]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題很像,所以,只是在530題的基礎上,把計算res的那一行代碼中的絕對值函數去掉即可。

③代碼

 //第530題是返回任意兩節點的差的絕對值的最小值,這個題是沒有絕對值要求
class Solution {
TreeNode pre;
int res=Integer.MAX_VALUE; //res在17行的helper函數里計算完畢,在18行里返回。
public int minDiffInBST(TreeNode root) {
if(root==null) return 0;
helper(root);
return res;
} private void helper(TreeNode root){
if(root==null) return; // 直接返回,也就是退出遞歸中的此輪helper函數。
helper(root.left); //因為是中序遍歷,所以,此處直接抵達BST的左下角
if(pre!=null)
res=Math.min(res,root.val-pre.val);
pre=root;
helper(root.right); }
}
//本題跟530題太像了。

④學到的東西

530題與本題783,最核心的地方在于第12到17行,

1、第12行,僅僅一個return,就跳出了本輪遞歸。

2、因為是中序遍歷,所以先處理.left。如13行。

3、第16行,就是root傳遞給pre的時機。

總結

以上是生活随笔為你收集整理的[LC]783题 二叉搜索树结点最小距离(中序遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。