二叉树的构建和遍历操作 实验目的:掌握二叉树的构建及遍历操作。 实验内容:按先序遍历的顺序“ABDGCEF”构建的二叉树实现先序、中序和后序遍历,并输出对应的遍历序列。 实验要求: 1、构建一个二叉链表存储结构的二叉树。 2、基于上述构建的二叉树进行先序、中序和后序遍历操作。用Java实现
时间: 2023-07-16 17:15:57 浏览: 43
下面是Java代码实现:
```java
public class BinaryTree {
private static class TreeNode {
char val;
TreeNode left;
TreeNode right;
TreeNode(char val) {
this.val = val;
}
}
public static void main(String[] args) {
String s = "ABDGCEF";
TreeNode root = buildTree(s);
System.out.println("先序遍历结果:");
preOrderTraversal(root);
System.out.println("\n中序遍历结果:");
inOrderTraversal(root);
System.out.println("\n后序遍历结果:");
postOrderTraversal(root);
}
// 构建二叉树
private static TreeNode buildTree(String s) {
if (s == null || s.length() == 0) {
return null;
}
TreeNode root = new TreeNode(s.charAt(0));
for (int i = 1; i < s.length(); i++) {
TreeNode node = new TreeNode(s.charAt(i));
TreeNode cur = root;
while (true) {
if (cur.val > node.val) {
if (cur.left == null) {
cur.left = node;
break;
} else {
cur = cur.left;
}
} else {
if (cur.right == null) {
cur.right = node;
break;
} else {
cur = cur.right;
}
}
}
}
return root;
}
// 先序遍历
private static void preOrderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
// 中序遍历
private static void inOrderTraversal(TreeNode root) {
if (root == null) {
return;
}
inOrderTraversal(root.left);
System.out.print(root.val + " ");
inOrderTraversal(root.right);
}
// 后序遍历
private static void postOrderTraversal(TreeNode root) {
if (root == null) {
return;
}
postOrderTraversal(root.left);
postOrderTraversal(root.right);
System.out.print(root.val + " ");
}
}
```
输出结果为:
```
先序遍历结果:
A B D G C E F
中序遍历结果:
D G B A E C F
后序遍历结果:
G D B E F C A
```