成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

創(chuàng)建二叉樹(shù)節(jié)點(diǎn)類(lèi)

為了構(gòu)建一棵二叉樹(shù)結(jié)構(gòu),我們首先需要?jiǎng)?chuàng)建一個(gè)靜態(tài)內(nèi)部類(lèi)TreeNode。該類(lèi)表示一個(gè)二叉樹(shù)節(jié)點(diǎn),可以通過(guò)該類(lèi)對(duì)象來(lái)構(gòu)建二叉樹(shù)。

```java

public class TreeNode {

int val;

TreeNode left;

TreeNode right;

public TreeNode(int val) {

val;

}

}

```

算法實(shí)現(xiàn)

要將二叉搜索樹(shù)轉(zhuǎn)為有序鏈表,我們可以使用中序遍歷的方式得到一個(gè)有序列表。因此,我們可以通過(guò)遞歸調(diào)用中序遍歷的方法來(lái)完成轉(zhuǎ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ù)

為了輔助測(cè)試,我們可以編寫(xiě)一個(gè)工具函數(shù)來(lái)前序遍歷二叉樹(shù),并將其結(jié)構(gòu)打印到控制臺(tái)。

```java

public void printBinaryTree(TreeNode root) {

if (root null) {

return;

}

( " ");

printBinaryTree(root.left);

printBinaryTree(root.right);

}

```

本地測(cè)試

我們可以編寫(xiě)一個(gè)主方法來(lái)進(jìn)行本地測(cè)試,觀察控制臺(tái)輸出是否符合預(yù)期。

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

}

}

```

提交算法

在本地測(cè)試通過(guò)后,我們可以將算法提交到平臺(tái)進(jìn)行測(cè)試。確保代碼能夠順利運(yùn)行并通過(guò)所有測(cè)試用例。

標(biāo)簽: