zoukankan      html  css  js  c++  java
  • Convert Sorted Array to Binary Search Tree & Convert Sorted List to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

    Subscribe to see which companies asked this question

    要点就是找到中心点,然后分别递归构造左边的数和右边的数

    TreeNode* sortedArrayToBST(vector<int>& nums, int beg, int end) {
        if (beg > end)
            return nullptr;
        int mid = (beg + end) >> 1;
        TreeNode* root = new TreeNode(nums[mid]);
        root->left = sortedArrayToBST(nums, beg, mid - 1);
        root->right = sortedArrayToBST(nums, mid + 1, end);
        return root;
        
    }
    
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return sortedArrayToBST(nums, 0, nums.size()-1);
    }

    链表为了代码的简洁,我使用了二级指针,不过可读性变差了

    TreeNode* sortedListToBST(ListNode* head) {
        if (head == nullptr)
            return nullptr;
        ListNode* fast = head;
        ListNode** slow = &head;
        while (fast->next != nullptr && fast->next->next != nullptr)
        {
            fast = fast->next->next;
            slow = &((*slow)->next);
        }
        TreeNode* root = new TreeNode((*slow)->val);
        
        root->right = sortedListToBST((*slow)->next);
        *slow = nullptr;
        root->left = sortedListToBST(head);
    
        return root;
    }
  • 相关阅读:
    Linux date自己实现代码
    Linux常用指令
    awk getline命令
    文档资料记录
    数学之美番外篇:平凡而又神奇的贝叶斯方法
    最小二乘法(ZZ)
    SpringMVC简单使用教程
    Oracle设置序列方法
    Bootstrap Table的使用详解
    Html中div块居中显示
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/5224699.html
Copyright © 2011-2022 走看看