给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
题解:使用树的前序遍历。
class Solution {
public void flatten(TreeNode root) {
List<TreeNode> tree=new ArrayList<TreeNode>();
qain(root,tree);
for(int i=1;i<tree.size();i++){
TreeNode prev=tree.get(i-1);
prev.left=null;
prev.right=tree.get(i);
}
}
public void qain(TreeNode root, List<TreeNode> tree){
if(root==null){
return;
}
tree.add(root);
qain(root.left,tree);
qain(root.right,tree);
}
}