您的位置:首页 > 其它

Convert sorted list into binary search tree

2013-04-15 03:22 183 查看
与上一题相同。

class Solution {
public:
int calLen(ListNode *node)
{
int len = 0;
while(node)
{
len++;
node = node->next;
}
return len;
}

void createTree(ListNode *node, int start, int end, TreeNode *&tmpRoot)
{
if (start > end)
return;

int mid = (start + end) / 2;

ListNode *p = node;

for(int i = start; i < mid; i++)
p = p->next;

tmpRoot = new TreeNode(p->val);
createTree(node, start, mid - 1, tmpRoot->left);
createTree(p->next, mid + 1, end, tmpRoot->right);

}

TreeNode *sortedListToBST(ListNode *head) {

int len = calLen(head);
TreeNode *tmpRoot;
createTree(head, 0, len - 1, tmpRoot);
return tmpRoot;
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: