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

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

 题目

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

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

    解题思路

      1. 通过递归先序遍历树;
      2. 用List存储遍历后的结点;
      3. 遍历List重组链表。

      代码展示

      class Solution {
          private List<TreeNode> list = new ArrayList<>();
          public void flatten(TreeNode root) {
              if(root == null){
                  return;
              }
              nextNode(root);
              root = list.get(0);
              TreeNode temp = root;
              for (int i = 1; i < list.size(); i++){
                  temp.left = null;
                  temp.right = list.get(i);
                  temp = temp.right;
              }
              System.out.println(123);
          }
          public void nextNode(TreeNode root){
              if(root == null){
                  return;
              }
              list.add(root);
              nextNode(root.left);
              nextNode(root.right);
          }
      }

      image.gif


      目录
      相关文章
      |
      2月前
      |
      Java
      java数据结构,双向链表的实现
      文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
      java数据结构,双向链表的实现
      |
      1月前
      【LeetCode 31】104.二叉树的最大深度
      【LeetCode 31】104.二叉树的最大深度
      20 2
      |
      1月前
      【LeetCode 29】226.反转二叉树
      【LeetCode 29】226.反转二叉树
      16 2
      |
      1月前
      【LeetCode 28】102.二叉树的层序遍历
      【LeetCode 28】102.二叉树的层序遍历
      16 2
      |
      1月前
      |
      存储 安全 Java
      【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
      【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
      24 3
      |
      1月前
      |
      Java
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
      27 1
      |
      1月前
      |
      算法 Java C语言
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
      24 1
      |
      25天前
      |
      算法 Java
      JAVA 二叉树面试题
      JAVA 二叉树面试题
      14 0
      |
      1月前
      【LeetCode 43】236.二叉树的最近公共祖先
      【LeetCode 43】236.二叉树的最近公共祖先
      19 0
      |
      1月前
      【LeetCode 38】617.合并二叉树
      【LeetCode 38】617.合并二叉树
      14 0
      下一篇
      无影云桌面