力扣114. 二叉树展开为链表

力扣114. 二叉树展开为链表,第1张

题目:

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

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



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


 

思路: 递归实现前序遍历

        对二叉树进行前序遍历,获得各节点被访问到的顺序。


由于将二叉树展开为链表之后会破坏二叉树的结构,因此在前序遍历结束之后更新每个节点的左右子节点的信息,将二叉树展开为单链表。


class Solution {
    public void flatten(TreeNode root) {
        List list = new ArrayList();
        preorderTraversal(root, list);
        int size = list.size();
        //前序遍历结束之后更新每个节点的左右子节点的信息
        for(int i=1;i list) {
        if(root!=null){
            list.add(root);
            preorderTraversal(root.left, list);
            preorderTraversal(root.right, list);
        }
    }
}

力扣题目:114. 二叉树展开为链表 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/564238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-03
下一篇 2022-04-03

发表评论

登录后才能评论

评论列表(0条)

保存