本文主要是介绍leetcode 109:有序链表转换二叉搜索树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用的是递归的方式,所以时间复杂度有些高,48ms
TreeNode*newTree(std::vector<int> a,int s,int t){TreeNode*root=NULL;if(t-s==2){root=new TreeNode(a[s+1]);root->left=new TreeNode(a[s]);root->right=new TreeNode(a[s+2]);}else if(t-s==1){root=new TreeNode(a[s]);root->right=new TreeNode(a[s+1]);root->left=NULL;}else if(s==t){root=new TreeNode(a[s]);}if(t-s>2){root=new TreeNode(a[(s+t)/2]);root->left=newTree(a,s,(s+t)/2-1);root->right=newTree(a,(s+t)/2+1,t);}return root;
}TreeNode* sortedListToBST(ListNode* head) {std::vector<int> a;while(head!=NULL){a.push_back(head->val);head=head->next;}int c=a.size();TreeNode*root=newTree(a,0,c-1);return root;
}
这篇关于leetcode 109:有序链表转换二叉搜索树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!