2016 - 2024

感恩一路有你

Java实现将二叉搜索树转为有序链表

浏览量:1705 时间:2024-01-20 16:57:54 作者:采采

给定一个二叉搜索树,我们需要将其转变为一条有序链表。在这个问题中,我们通过TreeNode类来构建一棵二叉搜索树,并返回以TreeNode类构建的有序链表。每个节点的左子树为空,只有右子树。

创建二叉树节点类

为了构建一棵二叉树结构,我们首先需要创建一个静态内部类TreeNode。该类表示一个二叉树节点,可以通过该类对象来构建二叉树。

```java

public class TreeNode {

int val;

TreeNode left;

TreeNode right;

public TreeNode(int val) {

val;

}

}

```

算法实现

要将二叉搜索树转为有序链表,我们可以使用中序遍历的方式得到一个有序列表。因此,我们可以通过递归调用中序遍历的方法来完成转换。

```java

public TreeNode convertBSTToLinkedList(TreeNode root) {

if (root null) {

return null;

}

TreeNode prev null;

TreeNode head null;

inorder(root, prev, head);

return head;

}

private void inorder(TreeNode node, TreeNode prev, TreeNode head) {

if (node null) {

return;

}

inorder(node.left, prev, head);

if (prev null) {

head node;

} else {

prev.right node;

}

node.left null;

prev node;

inorder(node.right, prev, head);

}

```

辅助函数:打印二叉树

为了辅助测试,我们可以编写一个工具函数来前序遍历二叉树,并将其结构打印到控制台。

```java

public void printBinaryTree(TreeNode root) {

if (root null) {

return;

}

( " ");

printBinaryTree(root.left);

printBinaryTree(root.right);

}

```

本地测试

我们可以编写一个主方法来进行本地测试,观察控制台输出是否符合预期。

```java

public static void main(String[] args) {

Solution solution new Solution();

TreeNode root new TreeNode(4);

root.left new TreeNode(2);

root.right new TreeNode(5);

root.left.left new TreeNode(1);

root.left.right new TreeNode(3);

(root);

TreeNode result (root);

("

");

while (result ! null) {

( " ");

result result.right;

}

}

```

提交算法

在本地测试通过后,我们可以将算法提交到平台进行测试。确保代码能够顺利运行并通过所有测试用例。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。