您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)leetCode如何計算二叉搜索樹的最小絕對差,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
給你一棵所有節(jié)點為非負(fù)值的二叉搜索樹,請你計算樹中任意兩節(jié)點的差的絕對值的最小值。
示例:
輸入:
1
\
3
/
2
輸出:
1
解釋:
最小絕對差為 1,其中 2 和 1 的差的絕對值為 1(或者 2 和 3)。
基于中序遍歷獲取樹節(jié)點數(shù)據(jù),進(jìn)行求解
import java.util.ArrayList;
import java.util.List;
public class GetMinimumDifferenceTest {
public static void main(String[] args) {
TreeNode t1=new TreeNode(1);
TreeNode t2=new TreeNode(3);
TreeNode t3=new TreeNode(2);
t1.right=t2;
t2.left=t3;
int minimumDifference = getMinimumDifference(t1);
System.out.println("minimumDifference = " + minimumDifference);
}
public static int getMinimumDifference(TreeNode root) {
List<Integer> list = new ArrayList<>();
if (root == null) {
return -1;
}
dfs(root, list);
System.out.println("list = " + list);
int[] toArray = list.stream().mapToInt(x -> x).toArray();
int pre = toArray[0];
int res = Integer.MAX_VALUE;
for (int i = 1; i < toArray.length; i++) {
res = Math.min(res, toArray[i] - pre);
pre = toArray[i];
}
return res;
}
private static void dfs(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
if (root.left != null) {
dfs(root.left, list);
}
list.add(root.val);
if (root.right != null) {
dfs(root.right, list);
}
}
}
關(guān)于“l(fā)eetCode如何計算二叉搜索樹的最小絕對差”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。