Sunday, January 18, 2015

[Algorithm] Flatten Binary Tree to Doubly Linked List As Inorder


在preorder递归和迭代版本做略微修改就行了。迭代版本我们第二次访问节点的时候调整左右指针,注意只要备份右指针,然后去到原右子结点。左子节点不需要备份因为之后我们不会去左子树了。递归版本是类似的,只需备份右子结点,代码如下:

如果要求是constant space的话,用类似morris遍历的方法,第一次访问的时候把前驱结点的右指针链接到当前节点上,第二次访问的时候把节点链接到list上去,记得备份右子结点。然后去到原右子结点。

No comments:

Post a Comment