摘要:題目鏈接的值大小順序?qū)嶋H上就是滿足的條件,所以直接中序遍歷,過程中維護一個,放入個當前離最近的值,的時,新的值和的距離如果小于隊首的那個值和的距離那么移除隊首,如果,且新的距離大于等于隊首的距離,直接退出,返回隊列中的所有結(jié)果。
272. Closest Binary Search Tree Value II
題目鏈接:https://leetcode.com/problems...
bst的值大小順序?qū)嶋H上就是滿足inorder的條件,所以直接中序遍歷,過程中維護一個queue,放入k個當前離target最近的值,queue的size=k時,新的值和target的距離如果小于隊首的那個值和target的距離那么移除隊首,如果size=k,且新的距離大于等于隊首的距離,直接退出,返回隊列中的所有結(jié)果。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public ListclosestKValues(TreeNode root, double target, int k) { Queue q = new LinkedList(); TreeNode prev = null, cur = root; while(cur != null) { if(cur.left == null) { if(q.size() == k) { if(Math.abs(q.peek() - target) <= Math.abs(cur.val - target)) break; q.poll(); } q.offer(cur.val); cur = cur.right; } else { prev = cur.left; while(prev.right != cur && prev.right != null) prev = prev.right; // connect the prev with current if(prev.right == null) { prev.right = cur; cur = cur.left; } // traverse to current node else { prev.right = null; if(q.size() == k) { if(Math.abs(q.peek() - target) <= Math.abs(cur.val - target)) break; q.poll(); } q.offer(cur.val); cur = cur.right; } } } return (List) q; } }
按要求是要O(h)的時間復(fù)雜度。提示找pre和suc,那么分別找到離k最近的pre和suc就好了,bst里面找離最近的k的復(fù)雜度是O(h),這個過程中要把路上的node存下來,以便找pre和next。
參考discussion里的:
https://discuss.leetcode.com/...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66678.html
摘要:原題網(wǎng)址題意在二叉搜索樹當中找到離最近的個數(shù)。解題思路由于二叉搜索數(shù)的中序遍歷是有序的,比如例子中的樹,中序遍歷為。 原題網(wǎng)址:https://leetcode.com/problems... Given a non-empty binary search tree and a target value, find?k?values in the BST that are closes...
摘要:遞歸法復(fù)雜度時間空間思路根據(jù)二叉樹的性質(zhì),我們知道當遍歷到某個根節(jié)點時,最近的那個節(jié)點要么是在子樹里面,要么就是根節(jié)點本身。因為我們知道離目標數(shù)最接近的數(shù)肯定在二叉搜索的路徑上。 Closest Binary Search Tree Value I Given a non-empty binary search tree and a target value, find the va...
摘要:復(fù)雜度思路用一個變量來記錄當前的值,并且在每次之前,比較得到目前的最大值。注意變量的比較不要用代碼 LeetCode[270] Closest Binary Search Tree Value Given a non-empty binary search tree and a target value, find the value in the BST that is close...
Problem Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target. Note: Given target value is a floating point.You are guaranteed to have only o...
摘要:在線網(wǎng)站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
閱讀 1026·2021-11-23 09:51
閱讀 2344·2021-10-08 10:22
閱讀 2544·2021-09-29 09:35
閱讀 854·2021-09-22 15:20
閱讀 2859·2019-08-30 15:53
閱讀 2413·2019-08-30 13:55
閱讀 1097·2019-08-29 17:27
閱讀 2870·2019-08-29 17:26