• #Leetcode# 109. Convert Sorted List to Binary Search Tree


    https://leetcode.com/problems/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

    代码:

    class Solution {
    public:
        TreeNode* sortedListToBST(ListNode* head) {
            if (!head) return NULL;
            return helper(head, NULL);
        }
        TreeNode* helper(ListNode* head, ListNode* tail) {
            if (head == tail) return NULL;
            ListNode *slow = head, *fast = head;
            while (fast != tail && fast -> next != tail) {
                slow = slow -> next;
                fast = fast -> next -> next;
            }
            TreeNode *cur = new TreeNode(slow -> val);
            cur -> left = helper(head, slow);
            cur -> right = helper(slow -> next, tail);
            return cur;
        }
    };
    

      从中间找父亲节点 递归

     

  • 相关阅读:
    假期学习01
    构建之法读后感(二)
    构建之法读后感(一)
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每周日报
    每日日报
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10361998.html
Copyright © 2020-2023  润新知