luckydog

V1

2022/03/17阅读:31主题:默认主题

Code_114

二叉树展开为链表

code_114
给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。
来源:力扣(LeetCode)

思路

  • 先序遍历
  • 边先序边展开

实现

先序遍历

public void flatten(TreeNode root) {
        List<TreeNode> list = new ArrayList<>();
        preOrder(root, list);
        int size = list.size();
        for (int i = 1; i < size; i++) {
            TreeNode prev = list.get(i - 1), cur = list.get(i);
            prev.left = null;
            prev.right = cur;
        }
    }
        public void preOrder(TreeNode root, List<TreeNode> list) {
        if (root != null) {
            list.add(root);
            preOrder(root.left, list);
            preOrder(root.right, list);
        }
    }

边先序边展开(待写)


        

分类:

后端

标签:

Java

作者介绍

luckydog
V1