当前位置: 首页 > 图灵资讯 > 技术篇> #yyds干货盘点# LeetCode程序员面试金典:二叉树展开为链表

#yyds干货盘点# LeetCode程序员面试金典:二叉树展开为链表

来源:图灵教育
时间:2023-05-28 09:34:07

题目:

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

展开后的单链表也应使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左指针始终是 null 。

展开后的单链表应与二叉树相匹配 先序遍历 顺序相同。

示例 1:

输入:root = [1,2,5,3,4null,6]

输出:[1,null,2,null,3,null,4,null,5,null,6]

示例 2:

输入:root = []

输出:[]

示例 3:

输入:root = [0]

输出:[0]

代码实现:

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