劍指offer----將有序連結串列轉換為二叉搜尋樹
題目:
給定一個升序排列的有序單鏈表,將其轉換為一棵平衡的二叉搜尋樹。
思路:
自頂向下建。
fast指標每次走兩步,slow指標每次走一步,最後fast走到最後,slow走到中間,作為根,找到中間結點的前一個結點,斷開前後,遞迴左連結串列,右連結串列。
class Solution {
public:
TreeNode *sortedListToBST(ListNode *head) {
if (head == NULL)
return NULL;
if (head->next == NULL)
return new TreeNode(head->val);
ListNode* fast = head;
ListNode* slow = head;
ListNode* premid = NULL;//中間結點的前一個結點
while (fast != NULL&&fast->next != NULL)
{
premid = slow;
slow = slow->next;
fast = fast->next-> next;
}
TreeNode* root = new TreeNode(slow->val);
premid->next = NULL;
root->left = sortedListToBST(head);
root->right = sortedListToBST(slow->next);
return root;
}
};
相關推薦
劍指offer----將有序連結串列轉換為二叉搜尋樹
題目: 給定一個升序排列的有序單鏈表,將其轉換為一棵平衡的二叉搜尋樹。 思路: 自頂向下建。 fast指標每次走兩步,slow指標每次走一步,最後fast走到最後,slow走到中間,作為根,找到
Leetcode:108.將有序陣列轉換為二叉搜尋樹&&Leetcode:109.將有序連結串列轉換成二叉搜尋樹
Leetcode:108.將有序陣列轉換為二叉搜尋樹 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可
Leetcode:108.將有序陣列轉換為二叉搜尋樹&&Leetcode:109.將有序連結串列轉換成二叉搜尋樹
Leetcode:108.將有序陣列轉換為二叉搜尋樹 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9],
109,有序連結串列轉換為二叉搜尋樹
給定一個單鏈表,其中的元素按升序排序,將其轉換為高度平衡的二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定的有序連結串列: [-10, -3, 0, 5, 9], 一個可能的答案是:[0, -3,
LeetCode109 將排序連結串列轉換為二叉搜尋樹
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balance
leetcode 將已排序的 陣列/連結串列 轉換為二叉搜尋樹(BST),Python實現
思路:不論是陣列還是連結串列,遞迴地找到他的root(即序列的中點),並返回。 1. 將陣列轉換為二叉樹: # Definition for a binary tree node. # class T
leetcode-將有序陣列轉換為二叉搜尋樹(JavaScript)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
leetcode 108. 將有序陣列轉換為二叉搜尋樹(java)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
108. 將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5]
leetcode-108. 將有序陣列轉換為二叉搜尋樹
題目 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,
leetcode 108. 將有序陣列轉換為二叉搜尋樹
始終使用陣列中間的數為父節點,兩邊的子陣列構成兩個子樹。 TreeNode* sortedArrayToBST(vector<int> &nums) { int size_nums = nums.size(); if (size_
[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null
LeetCode 108. 將有序陣列轉換為二叉搜尋樹 Python
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5]
LeetCode 108.Convert Sorted Array to Binary Search Tree (將有序陣列轉換為二叉搜尋樹)
題目描述: 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,
108. 將有序陣列轉換為二叉搜尋樹(簡單,陣列,二叉樹)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
LeetCode演算法題108:將有序陣列轉換為二叉搜尋樹解析
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,nul
【LeetCode 108】將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5
【Leetcode】108. 將有序陣列轉換為二叉搜尋樹
題目描述:將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例:給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],
leetcode108python將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例:給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以表示
[和小菜雞一起刷題(python)] LeetCode 108. 將有序陣列轉換為二叉搜尋樹(Convert Sorted Array to Binary Search Tree)
LeetCode 108. 將有序陣列轉換為二叉搜尋樹(Convert Sorted Array to Binary Search Tree) 原題 思路 程式碼 原題 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。