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


      目录
      相关文章
      |
      5月前
      【力扣】-- 移除链表元素
      【力扣】-- 移除链表元素
      56 1
      |
      5月前
      【LeetCode 31】104.二叉树的最大深度
      【LeetCode 31】104.二叉树的最大深度
      46 2
      |
      5月前
      【LeetCode 29】226.反转二叉树
      【LeetCode 29】226.反转二叉树
      43 2
      |
      5月前
      【LeetCode 28】102.二叉树的层序遍历
      【LeetCode 28】102.二叉树的层序遍历
      30 2
      |
      5月前
      |
      Java
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
      【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
      50 1
      |
      4月前
      |
      算法 Java
      JAVA 二叉树面试题
      JAVA 二叉树面试题
      39 0
      |
      5月前
      【LeetCode 43】236.二叉树的最近公共祖先
      【LeetCode 43】236.二叉树的最近公共祖先
      39 0
      |
      5月前
      【LeetCode 38】617.合并二叉树
      【LeetCode 38】617.合并二叉树
      35 0
      |
      5月前
      【LeetCode 37】106.从中序与后序遍历构造二叉树
      【LeetCode 37】106.从中序与后序遍历构造二叉树
      38 0
      |
      5月前
      【LeetCode 34】257.二叉树的所有路径
      【LeetCode 34】257.二叉树的所有路径
      44 0