2012-07-01 55 views
0

问题似乎很简单。 您必须使用相同的树并将正确的子指针作为列表中的下一个指针。将BST转换为排序列表

,所以我使用的算法如下:

def inorder(node, prev, head): 
     if(node == NULL): 
      return; 
     inorder(node.left, prev, head) 

     node.right = prev 
     if(!prev): 
      head = node 
     prev = node 

     inorder(node.right, prev, head) 

谁能指出确切位置在哪里我错了,因为它只是似乎没有工作。

+3

它似乎不起作用?你认为你没有得到什么结果? – millimoose

+0

查看这篇文章: http://www.geeksforgeeks.org/in-place-convert-a-given-binary-tree-to-doubly-linked-list/ –

回答

1

,我看到的第一个错误是,你分配给headprevinorder内,并希望,不知怎的,这会影响headprev以前调用了内部inorder。但事实并非如此。

您需要做的是让inorder返回您想要的信息,然后在父呼叫中分配它们。