【发布时间】:2011-03-30 21:20:00
【问题描述】:
给定一个循环双向链表...如何将其转换为二叉搜索树..
问题位于 http://rajeevprasanna.blogspot.com/2011/02/convert-binary-tree-into-doubly-linked.html
我尝试为相同的代码编写代码,但它卡住了!!拜托,这里有一些建议会很好。另外,我怎样才能找到链表的中间部分。请用代码(C 或 C++ 代码)来讨论,如果可能的话,小例子会很好。
通过我上面提供的文章(URL),BST 到链接列表是一个很好的练习。我试图遵循相同的原则,但我的程序卡住了...请帮助...
Node ListToTree(Node head)
{
if(head == NULL)
return NULL;
Node hleft = NULL, hright = NULL;
Node root = head;
hleft = ListToTree(head->left);
head->left = NULL;
root->left = hleft;
hright = ListToTree(head->right);
head->right = NULL;
root->right = hright;
return root;
}
【问题讨论】:
-
在“循环双向链表”的中间?想一想……
-
需要对原始头部的引用并确保左右不相等o.O
-
另外,我猜你窒息意味着你的程序因堆栈溢出而崩溃。
-
嘿!你是说中位数吗?或者你的意思是什么意思?要不然是啥?我不是故意的。
-
@pmg - 我正在尝试相同的逻辑,在链表的中间......但无法弄清楚递归步骤。你能帮忙吗...
标签: c algorithm data-structures