栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

力扣hot100 114题二叉树展开为链表 打卡

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣hot100 114题二叉树展开为链表 打卡

114. 二叉树展开为链表

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

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

解题思路:因为题目告诉我们是与二叉树的先序遍历顺序相同,所以我们可以先对二叉树进行先序遍历,用List存储节点。遍历完成之后,再通过一个虚拟结点依次给root的 rigth 赋值,root的left赋值null。代码及提交截图如下:  

class Solution {
    public void flatten(TreeNode root) {
        List list = new ArrayList();
        dfs(root,list);
        int len = list.size();
        TreeNode pre = root;
        for(int i = 1 ; i < len ; i++){
            pre.right = list.get(i);
            pre.left = null;
            pre = pre.right;
        }
    }
    private void dfs(TreeNode root,List list){
        if(root == null){
            return;
        }
        list.add(root);
        dfs(root.left,list);
        dfs(root.right,list);
        return;
    }
    
}

提交截图:

总结:还有一种方法是边改变边遍历,可以再学习学习。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号