二叉树根据深度优先遍历变成一个链表形式
class Solution {
List<TreeNode> nodes;
public void flatten(TreeNode root) {
nodes = new LinkedList();
dfs(root);
int n = nodes.size();
for(int i = 1; i<n; i++){
TreeNode pre = nodes.get(i -1) , curr = nodes.get(i);
pre.left = null;
pre.right = curr;
}
}
public void dfs(TreeNode root){
if(root == null){
return;
}
nodes.add(root);
dfs(root.left);
dfs(root.right);
}
}
先进行一个中序遍历,然后再把每个节点的左孩子节点设置为null,右孩子节点设置为下一个节点。