109. Convert Sorted List to Binary Search Tree

来源:互联网 发布:js embed 属性 编辑:程序博客网 时间:2024/05/01 10:03

一开始没有考虑建立一棵BST树,按照前序遍历的方式建立了一棵树,只不过加上了平衡的条件,使得树的深度限制在一个阈值内。但是要建立一棵BST树的话,需要从中序遍历的角度建一棵树,这还是我第一次利用中序建立树。主要是利用了BST的性质,每次对分数据,建树。
最终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:    //left=0;right=nums.size()-1;    TreeNode* func(int left,int right,vector<int>& nums)    {        if(left<=right)        {            int mid=left+(right-left)/2;            TreeNode* root=new TreeNode(nums[mid]);            root->left=func(left,mid-1,nums);            root->right=func(mid+1,right,nums);            return root;        }        else            return NULL;    }    TreeNode* sortedListToBST(ListNode* head) {        vector<int> nums;        ListNode* temp=head;        while(temp!=NULL)        {            nums.push_back(temp->val);            temp=temp->next;        }        if(nums.size()==0)            return NULL;        TreeNode* root=func(0,nums.size()-1,nums);        return root;    }};
0 0
原创粉丝点击