来源:互联网 发布:2016年ac尼尔森数据 编辑:程序博客网 时间:2024/05/16 11:35

一,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.


我的代码

/** * 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) {        if(head == NULL){            return NULL;        }        vector<int> nums;        ListNode *p = head;        while(p != NULL){            nums.push_back(p->val);            p = p->next;        }        return dfs(nums, 0, nums.size()-1);    }        TreeNode* dfs(vector<int>& nums, int s, int t){        if(s <= t){            int mid = (s + t) / 2;            TreeNode *p = new TreeNode(nums[mid]);            p->left = dfs(nums, s, mid-1);            p->right = dfs(nums, mid+1, t);            return p;        } else {            return NULL;        }    }};