zoukankan      html  css  js  c++  java
  • LeetCode OJ

    题目:

    Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

    解题思路:

    注意是让构造平衡二叉搜索树。

    每次将链表从中间断开,分成左右两部分。左边部分用来构造左子树,右边部分用来构造右子树。递归进行求解。

    代码:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 /**
    10  * Definition for binary tree
    11  * struct TreeNode {
    12  *     int val;
    13  *     TreeNode *left;
    14  *     TreeNode *right;
    15  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    16  * };
    17  */
    18 class Solution {
    19 public:
    20     TreeNode *sortedListToBST(ListNode *head) {
    21         if (head == NULL) return NULL;
    22 
    23         ListNode *slow = head, *fast = head, *pre = NULL;
    24         do {
    25             fast = fast->next;
    26             if (fast == NULL) break;
    27             fast = fast->next;
    28             
    29             pre = slow;
    30             slow = slow->next;
    31         } while (fast != NULL);
    32 
    33         TreeNode * root = new TreeNode(slow->val);
    34         if (pre != NULL) {
    35             pre->next = NULL;
    36             root->left = sortedListToBST(head);
    37         }
    38         else {
    39             root->left = NULL;
    40         }
    41         TreeNode * right_root = sortedListToBST(slow->next);
    42         root->right = right_root;
    43         if (pre != NULL) pre->next = slow;
    44         return root;
    45     }
    46 };
  • 相关阅读:
    量化投资_期货日内交易几个问题的考证
    量化投资_上一个交易时间段对今日收盘价涨跌的影响
    RunJS
    sublime3快捷 输入html
    NLP学习资源
    Invert Binary Tree
    定时任务 Crontab命令 详解
    根据职位名,自动生成jd
    使用python + tornado 做项目demo演示模板
    Awk 实例
  • 原文地址:https://www.cnblogs.com/dongguangqing/p/3728160.html
Copyright © 2011-2022 走看看