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

    欢迎fork and star:Nowcoder-Repository-github

    109. Convert Sorted List to Binary Search Tree

    题目

    Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
    
    For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
    
    Example:
    
    Given the sorted linked list: [-10,-3,0,5,9],
    
    One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:
    
          0
         / 
       -3   9
       /   /
     -10  5
    
    

    解析

    • 主要考察链表求中间节点
    • 统一输入输出接口,需要将前后两段指针分开,也可以再加入一个尾指针参数
    • 这个题是这几天做的最顺利的,一次AC掉
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode *sortedListToBST(ListNode *head) {
    		
    		ListNode* slow = head;
    		ListNode* fast = head;
    		ListNode* pre = NULL;
    		if (!head)
    		{
    			return NULL;
    		}
    		if (!head->next)
    		{
    			TreeNode* temp = new TreeNode(head->val);
    			return temp;
    		}
    		while (fast&&fast->next)
    		{
    			pre = slow;
    			slow = slow->next;
    			fast = fast->next->next;
    		}
    		
    		TreeNode* root = new TreeNode(slow->val);
            
            pre->next = NULL;
    		slow = slow->next;
    		root->left = sortedListToBST(head);
    		root->right = sortedListToBST(slow);
    
    		return root;
    	}
    };
    
    

    题目来源

  • 相关阅读:
    BZOJ5104 二次剩余板子
    BZOJ5329 [Sdoi2018]战略游戏 圆方树+虚树
    BZOJ1095 动态点分治
    BZOJ3992: [SDOI2015]序列统计
    kd-tree板子
    thusc2018翻车记
    BZOJ5336 DP套DP
    BZOJ4316 仙人掌DP
    问题 F: 最小花费
    问题 C: 热浪
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/8244684.html
Copyright © 2011-2022 走看看