`mid = low + (high -low)//2` 與 `(low + high)//2`
我正在研究樹問題Convert Sorted Array to Binary Search Tree - LeetCode給定一個(gè)元素按升序排序的數(shù)組,將其轉(zhuǎn)換為高度平衡的 BST。對于這個(gè)問題,高度平衡二叉樹被定義為一個(gè)二叉樹,其中每個(gè)節(jié)點(diǎn)的兩個(gè)子樹的深度相差永遠(yuǎn)不會超過 1。例子:Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST: 0 / \ -3 9 / / -10 5直觀的 D&Q 解決方案是class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode: """ Runtime: 64 ms, faster than 84.45% Memory Usage: 15.5 MB, less than 5.70% """ if len(nums) == 0: return None #if len(nums) == 1: return TreeNode(nums[0]) mid = len(nums) // 2 root = TreeNode(nums[mid]) if len(nums) == 1: return root if len(nums) > 1: root.left = self.sortedArrayToBST(nums[:mid]) root.right = self.sortedArrayToBST(nums[mid+1:]) return root mid設(shè)置為len(nums)//2或(low + high)//2當(dāng)閱讀其他提交時(shí),我發(fā)現(xiàn)class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode: return self.buildBST(nums, 0, len(nums)) def buildBST(self, nums, left, right): if right <= left: return None if right == left + 1: return TreeNode(nums[left]) mid = left + (right - left) // 2 root = TreeNode(nums[mid]) root.left = self.buildBST(nums, left, mid) root.right = self.buildBST(nums, mid + 1, right) return rootmid 被設(shè)置為 mid = low + (high -low)//2mid = low + (high -low)//2超過有(low + high)//2什么好處?
查看完整描述