卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

Java實現(xiàn)將二叉搜索樹轉為有序鏈表

給定一個二叉搜索樹,我們需要將其轉變?yōu)橐粭l有序鏈表。在這個問題中,我們通過TreeNode類來構建一棵二叉搜索樹,并返回以TreeNode類構建的有序鏈表。每個節(jié)點的左子樹為空,只有右子樹。創(chuàng)建二叉樹

給定一個二叉搜索樹,我們需要將其轉變?yōu)橐粭l有序鏈表。在這個問題中,我們通過TreeNode類來構建一棵二叉搜索樹,并返回以TreeNode類構建的有序鏈表。每個節(jié)點的左子樹為空,只有右子樹。

創(chuàng)建二叉樹節(jié)點類

為了構建一棵二叉樹結構,我們首先需要創(chuàng)建一個靜態(tài)內部類TreeNode。該類表示一個二叉樹節(jié)點,可以通過該類對象來構建二叉樹。

```java

public class TreeNode {

int val;

TreeNode left;

TreeNode right;

public TreeNode(int val) {

val;

}

}

```

算法實現(xiàn)

要將二叉搜索樹轉為有序鏈表,我們可以使用中序遍歷的方式得到一個有序列表。因此,我們可以通過遞歸調用中序遍歷的方法來完成轉換。

```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);

}

```

輔助函數(shù):打印二叉樹

為了輔助測試,我們可以編寫一個工具函數(shù)來前序遍歷二叉樹,并將其結構打印到控制臺。

```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;

}

}

```

提交算法

在本地測試通過后,我們可以將算法提交到平臺進行測試。確保代碼能夠順利運行并通過所有測試用例。

標簽: