【leetcode】109. 有序链表转换二叉搜索树
int getLength(struct ListNode* head) { int ret = 0; while (head != NULL) { ++ret, head = head->next; } return ret; } struct TreeNode* buildTree(struct ListNode** head, int left, int right) { if (left > right) { return NULL; } int mid = (left + right + 1) / 2; struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode)); root->left = buildTree(head, left, mid - 1); root->val = (*head)->val; (*head) = (*head)->next; root->right = buildTree(head, mid + 1, right); return root; } struct TreeNode* sortedListToBST(struct ListNode* head) { int length = getLength(head); return buildTree(&head, 0, length - 1); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步