java 实现 二叉树的中序遍历 ABD#G###CE##F##代表如下二叉树 输出二叉树的中序遍历:D G B A E C F
时间: 2024-04-08 13:34:45 浏览: 64
下面是一个使用Java语言实现二叉树中序遍历的示例代码:
```java
import java.util.*;
// 二叉树节点定义
class TreeNode {
char val;
TreeNode left;
TreeNode right;
TreeNode(char val) {
this.val = val;
this.left = null;
this.right = null;
}
}
public class Main {
// 构建二叉树
public static TreeNode buildTree(Queue<Character> nodes) {
if (nodes.isEmpty()) {
return null;
}
char val = nodes.poll();
if (val == '#') {
return null;
}
TreeNode node = new TreeNode(val);
node.left = buildTree(nodes);
node.right = buildTree(nodes);
return node;
}
// 中序遍历二叉树
public static void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一串先序遍历字符串:");
String preorder = sc.nextLine();
// 将先序遍历字符串转换为字符队列
Queue<Character> nodes = new LinkedList<>();
for (char c : preorder.toCharArray()) {
nodes.offer(c);
}
// 构建二叉树
TreeNode root = buildTree(nodes);
// 中序遍历二叉树并输出结果
System.out.print("二叉树的中序遍历结果:");
inorderTraversal(root);
sc.close();
}
}
```
运行这段代码后,输入先序遍历字符串 "ABD#G###CE##F##",程序将输出中序遍历结果 "D G B A E C F"。
阅读全文