0
点赞
收藏
分享

微信扫一扫

leetcode 114. 二叉树展开为链表

mm_tang 2022-04-13 阅读 35
算法

leetcode 114. 二叉树展开为链表

题目描述

在这里插入图片描述
在这里插入图片描述

解题思路

参考:https://labuladong.gitee.io/algo/2/20/34/

首先思考用遍历,一边前序遍历,一边构造出一条新的链表就可以了。但需要额外空间,所以此题不考虑。

然后思考用子问题,定义函数为将以 root 为根节点的树拉平为链表。

class Solution {
    // 将以root为根节点的树拉平为链表
    public void flatten(TreeNode root) {
        // base case
        if (root == null) return;
        // 将左右子树拉平
        flatten(root.left);
        flatten(root.right);
        // 分别记录左右子树链表的头结点
        TreeNode left = root.left;
        TreeNode right = root.right;
        // 将root和左子树的链表连接
        root.left = null;
        root.right = left;
        // 找到当前链表的尾节点,将其与右子树链表的头结点连接
        TreeNode p = root;
        while (p.right != null) {
            p = p.right;
        }
        p.left = null;
        p.right = right;
    }
}
举报

相关推荐

0 条评论