【题目描述】
Flatten a binary tree to a fake "linked list" in pre-order traversal.
Here we use the right pointer in TreeNode as the next pointer in ListNode.
Notice
Don't forget to mark the left child of each node to null. Or you will get Time Limit Exceeded or Memory Limit Exceeded.
将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。
注意事项
不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。
【题目链接】
www.lintcode.com/en/problem/flatten-binary-tree-to-linked-list/
【题目解析】
我们可以不用递归,用循环。首先将根节点的左子树变为NULL,具体操作为:将根节点的左子树的最右的节点指向根节点的右子树,然后将根节点的右指针指向根节点的左子树,再将左子树置为NULL。然后处理在处理根节点的右子树,把右子节点看做根节点,重复上述步骤。
【参考答案】
www.jiuzhang.com/solutions/flatten-binary-tree-to-linked-list/
网友评论