[LeetCode] Convert Sorted List to Binary Search Tree

[LeetCode] 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.

这题的关键是能找出当前链表的中间节点,香港服务器租用,然后再递归左右的子链表,香港空间,开始的时候程序先计算链表总厂,香港空间,然后传入两个前后索引指针,最后每次递归找出中间节点即可。

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 * };*10 * Definition for binary tree11 * struct TreeNode {12 *int val;13 *TreeNode *left;14 *TreeNode *right;15 *TreeNode(int x) : val(x), left(NULL), right(NULL) {}16 * }; Solution {19 public:20int calLen(ListNode *node)21 {22int len = 0;23while(node)24 {25len++;26node = node->next;27 }28return len;29 }3031TreeNode *createTree(ListNode *node, int left, int right)32 {33if (left > right)34return NULL;mid = (left + right) / 2;3738ListNode *p = node;(int i = left; i < mid; i++)41p = p->next;4243TreeNode *leftNode = createTree(node, left, mid – 1);44TreeNode *rightNode = createTree(p->next, mid + 1, right);4546TreeNode *tNode = new TreeNode(p->val);4748tNode->left = leftNode;49tNode->right = rightNode; tNode;52 }5354TreeNode *sortedListToBST(ListNode *head) {55// Start typing your C/C++ solution belowlen = calLen(head);58return createTree(head, 0, len – 1);59 }60 };

posted on

只要功夫深,铁棒磨成绣花针。

[LeetCode] Convert Sorted List to Binary Search Tree

相关文章:

你感兴趣的文章:

标签云: