我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/description/
题目描述:
知识点:树的前序遍历
思路:前序遍历原树,再新建一棵树即可
时间复杂度和空间复杂度均是O(n),其中n为树中的节点个数。
JAVA代码:
public class Solution {
List<Integer> preOrder;
public void flatten(TreeNode root) {
preOrder = new ArrayList<>();
preOrderTraversal(root);
TreeNode cur = root;
for(int i = 0; i < preOrder.size() - 1; i++){
cur.left = null;
cur.right = new TreeNode(preOrder.get(i + 1));
cur = cur.right;
}
}
private void preOrderTraversal(TreeNode root){
if(null == root){
return;
}
preOrder.add(root.val);
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
}
LeetCode解题报告: