方法一:自底向上的 DFS
受到LeetCode 104. 二叉树的最大深度中方法二:自底向上的DFS的启发,我们考虑拆分子问题:
当前节点展开结果 = 当前节点 + 左子树链 + 右子树链
例如样例1 : 从根节点开始,一个“自底向上”的想法是:
1.递归进入左子树,构造左链:left_tree = 2->3->4
P4063.二叉树展开为链表
LeetCode 104. 二叉树展开为链表
题目描述
给定一棵二叉树的根结点 root,请你将它展开为一个单链表。
展开后的单链表应该同样使用 TreeNode,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。
展开后的单链表应该与二叉树先序遍历顺序相同。
输入描述
输入一行,表示二叉树的层序遍历结果。
结点之间用空格分隔,空结点用 null 表示。
例如:
1 2 5 3 4 null 6
树中结点数在范围 [0,2000] 内。
每个结点的值满足 −100<=node.val<=100。
输出描述
输出展开后的单链表。
输出格式为层序形式,结点之间用空格分隔,空指针用 null 表示。
展开后的结果应只通过 right 指针连接,所有 left 指针均为 null。
样例1
输入
1 2 5 3 4 null 6
输出
1 null 2 null 3 null 4 null 5 null 6

样例2
输入
null
输出
null
样例3
输入
0
输出
0