zoukankan      html  css  js  c++  java
  • leetcode 109. Convert Sorted List to Binary Search Tree

    从一个list->BST 还要height balance

    解题思路: 

    • 每次找中点作为root,将中点左边的作为左子树的节点,中点右边的作为右子树的节点。

    但是考虑树要找中间节点, 所以我最开始的思路是: 将list 转换为一个vector, 然后就可以easy的找中点和左,右两个部分了。 但是有一个数据超时了。。。

    class Solution {
    public:
        TreeNode * CreBST(vector<int> v, int s, int e)
        {
            if(s>e)
                return NULL;
            int mid=s+(e-s)/2;
            TreeNode * T=new TreeNode (v[mid]);
            T->left=CreBST(v,s, mid-1);
            T->right=CreBST(v,mid+1, e);
            return T;
        }
        TreeNode* sortedListToBST(ListNode* head) {
            ListNode *l=head;
            if(head==NULL)
                return NULL;
            vector<int> v;
            
            while(l)
            {
                v.push_back(l->val);
                l=l->next;
               
            }
           
          return CreBST(v,  0,  v.size()-1);
            
        }
    };
    

    所以不能先转换为vector。考虑直接在list 中找中点。。。

    • list 找中点, 定义两个指针, 一个是另一个的两边速度,如果快的到达了终点,慢的就刚好在中点
    class Solution {
    public:
        TreeNode * CreBST(ListNode * head, ListNode * Tail)
        {
            if(head==Tail)
                return NULL;
            
                
            ListNode * temp=head;
            ListNode * mid=head;
           
            while(temp!=Tail&& temp->next!=Tail)
            {
                temp=temp->next->next;
                mid=mid->next;
            }
            TreeNode * T=new TreeNode (mid->val);
            T->left=CreBST(head, mid);
            T->right=CreBST(mid->next, Tail);
            
            return T;
            
            
        }
        TreeNode * sortedListToBST(ListNode * head)
        {
            
            return CreBST(head, NULL);
            
        }
    

      

  • 相关阅读:
    js 中的 EventLoop
    线程的并发工具类
    xpath获取某个节点下的全部字节点的文本
    2020中国 .NET开发者大会精彩回顾:葡萄城高性能表格技术解读
    .NET 控件集 ComponentOne V2020.0 Update3 发布,正式支持 .NET 5
    log4net配置
    TP5.1 爬虫
    pip下载慢
    TP5.1 二维码生成
    composer插件集合
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7397660.html
Copyright © 2011-2022 走看看