114.二叉树展开为链表

张开发
2026/5/30 22:14:58 15 分钟阅读
114.二叉树展开为链表
package org.example; import java.util.ArrayList; import java.util.Collections; import java.util.List; class Solution { public void flatten(TreeNode root) { // 前序遍历二叉树 ListTreeNode traversal preorderTraversal(root); // 修改结点的 left 域和 right 域 for (int i 0; i traversal.size(); i) { if (i traversal.size() - 1) { // 将最后一个结点的 left 域和 right 域都置空 TreeNode treeNode traversal.get(traversal.size() - 1); treeNode.left null; treeNode.right null; } else { // 获取当前结点 TreeNode treeNode traversal.get(i); // left 域置空 treeNode.left null; // right 域指向下一个结点 treeNode.right traversal.get(i 1); } } } /** * 二叉树的前序遍历 * * param root 二叉树的根结点 * return 前序遍历结果 */ private ListTreeNode preorderTraversal(TreeNode root) { if (root null) { return Collections.emptyList(); } // 前序遍历结果 ListTreeNode traversal new ArrayList(); // 前序遍历 traversal.add(root); traversal.addAll(preorderTraversal(root.left)); traversal.addAll(preorderTraversal(root.right)); return traversal; } }

更多文章