1. 程式人生 > >劍指offer----將有序連結串列轉換為二叉搜尋樹

劍指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) 原題 思路 程式碼 原題 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。