一、题目
- 114. 二叉树展开为链表 - 力扣(LeetCode)
给你二叉树的根结点
root
,请你将它展开为一个单链表:- 展开后的单链表应该同样使用
TreeNode
,其中right
子指针指向链表中下一个结点,而左子指针始终为null
。- 展开后的单链表应该与二叉树 先序遍历 顺序相同。
二、思路
- 先把树前序遍历出来再构造链表,见解法一;
三、解法
解法一
class Solution {
private final List<TreeNode> PRE = new ArrayList<>();
public void flatten(TreeNode root) {
preOrder(root);
for (int i = 1; i < PRE.size(); i++) {
TreeNode prev = PRE.get(i - 1);
TreeNode curr = PRE.get(i);
prev.left = null;
prev.right = curr;
}
}
private void preOrder(TreeNode node) {
if (node == null) {
return;
}
PRE.add(node);
preOrder(node.left);
preOrder(node.right);
}
}