2013-04-07 187 views
2

我必须松开二叉树。我的意思是,我有以下方法松开二叉树

public static <T> BinaryNode<T> unthread(BinaryNode<T> root) 

接收双重线索二叉树,它应该返回一个拧开树 - 这意味着,它必须删除曾经是额外的节点null使它们再次为空。

我认为我应该这样做的方式是与每个节点建立链接列表,然后调用一个辅助方法,该方法将以线程树和链接列表作为参数。然后,遍历树,如果已经访问了一个节点,这意味着我必须删除它。

我不知道这是否会起作用。你有什么建议?

+1

什么是“双线程树”? – 2013-04-07 17:43:55

+0

也许你的意思是“双重联系”?这意味着孩子节点有一个参考,父母也有参考。 – gaborsch 2013-04-07 17:45:43

+0

我认为OP是指像堆数据结构中的二进制节点,并将它们转换为链接列表中的单链接节点。 – 2013-04-07 17:46:47

回答

0

它工作:)。我使用了前序遍历和链表。正如我所说如果节点是在链表中,并没有添加它,多数民众赞成在它。