[leetcode-108,109] 将有序数组转换为二叉搜索树
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                [leetcode-108,109] 将有序数组转换为二叉搜索树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                109. 有序鏈表轉換二叉搜索樹
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
給定一個單鏈表,其中的元素按升序排序,將其轉換為高度平衡的二叉搜索樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節點?的左右兩個子樹的高度差的絕對值不超過 1。
示例:
給定的有序鏈表: [-10, -3, 0, 5, 9],一個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜索樹:0/ \-3 9/ /-10 5/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; next = null; }* }*/ /*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ public class Solution {public TreeNode sortedListToBST(ListNode head) {if (head == null) {return null;}int end = 0;ListNode it = head;while(it.next != null) {it = it.next;end = end +1;}return build(head,0,end);}public TreeNode build(ListNode head,int start,int end) {if (start > end) {return null;} // if (start == end) { // return new TreeNode(head.val); // }//mid取值注意,測試用例不是按常規mid取值的,加不加以都是對的int mid = start + (end-start+1)/2;ListNode midNode = head;for (int i=start;i<mid;i++) {midNode = midNode.next;}TreeNode treeNode= new TreeNode(midNode.val);treeNode.left = build(head,start,mid-1);treeNode.right = build(midNode.next,mid+1,end);return treeNode;} }
?
?
108. 將有序數組轉換為二叉搜索樹
(1過)
將一個按照升序排列的有序數組,轉換為一棵高度平衡二叉搜索樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節點?的左右兩個子樹的高度差的絕對值不超過 1。
示例:
給定有序數組: [-10,-3,0,5,9],一個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜索樹:0/ \-3 9/ /-10 5public class ConvertSortedArrayToBinarySearchTree {public TreeNode sortedArrayToBST(int[] num) {if (num == null || num.length <=0) {return null;}return helper(num,0,num.length-1);}public TreeNode helper(int[] num,int start, int end) {if (start > end) {return null;}int mid = start + (end-start+1)/2;TreeNode node = new TreeNode(num[mid]);node.left = helper(num,start,mid - 1);node.right = helper(num,mid+1,end);return node;} }
?
轉載于:https://www.cnblogs.com/twoheads/p/10565362.html
總結
以上是生活随笔為你收集整理的[leetcode-108,109] 将有序数组转换为二叉搜索树的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: date简述
- 下一篇: matplotlib散点图笔记
