二叉树-将二叉树展开为链表

114.将二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:

展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。

输入:二叉树的根结点
输出:空?
思路:前序遍历之后再赋值,左边置为空,右边为单链表中的结点

使用递归

class Solution {
    List<TreeNode> list = new ArrayList<>();
    public void flatten(TreeNode root) {
        method(root);
        for(int i = 1; i < list.size(); i++){
            TreeNode temp = list.get(i - 1);
            TreeNode cur = list.get(i);
            temp.left = null;
            temp.right = cur;
        }
    }
    public void method(TreeNode root){
        if(root == null){
            return;
        }
        list.add(root);
        method(root.left);
        method(root.right);
    }
}

你可能感兴趣的:(链表,数据结构,二叉树,java)