import java.util.ArrayList; import java.util.List; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public void flatten(TreeNode root) { //二叉树的先序遍历,并且将结果以链表的形式输出 preOrder(root); for(int i=0;i<tree.size();i++) { if(i==tree.size()-1) { //尾 tree.get(i).left=null; tree.get(i).right=null; } else { tree.get(i).left=null; tree.get(i).right=tree.get(i+1); } } } public static List<TreeNode> tree=new ArrayList<TreeNode>(); public void preOrder(TreeNode root) { if(root==null) return ; //访问节点 tree.add(root); //递归左子 preOrder(root.left); //递归右子 preOrder(root.right); } }