二叉树的构建和遍历操作 实验目的:掌握二叉树的构建及遍历操作。 实验内容:按先序遍历的顺序“ABDGCEF”构建的二叉树实现先序、中序和后序遍历,并输出对应的遍历序列。 实验要求: 1、构建一个二叉链表存储结构的二叉树。 2、基于上述构建的二叉树进行先序、中序和后序遍历操作。用Java实现
时间: 2023-07-16 21:16:08 浏览: 54
以下是Java实现的代码:
```java
class TreeNode {
char val;
TreeNode left;
TreeNode right;
TreeNode(char val) {
this.val = val;
}
}
public class BinaryTree {
private TreeNode root;
public BinaryTree(String s) {
root = buildTree(s);
}
private TreeNode buildTree(String s) {
if (s == null || s.length() == 0) {
return null;
}
TreeNode node = new TreeNode(s.charAt(0));
if (s.length() == 1) {
return node;
}
int index = s.indexOf(node.val);
if (index > 0) {
node.left = buildTree(s.substring(1, index + 1));
}
if (index < s.length() - 1) {
node.right = buildTree(s.substring(index + 1));
}
return node;
}
public void preOrderTraversal() {
preOrderTraversal(root);
System.out.println();
}
private void preOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
System.out.print(node.val + " ");
preOrderTraversal(node.left);
preOrderTraversal(node.right);
}
public void inOrderTraversal() {
inOrderTraversal(root);
System.out.println();
}
private void inOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
inOrderTraversal(node.left);
System.out.print(node.val + " ");
inOrderTraversal(node.right);
}
public void postOrderTraversal() {
postOrderTraversal(root);
System.out.println();
}
private void postOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
postOrderTraversal(node.left);
postOrderTraversal(node.right);
System.out.print(node.val + " ");
}
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree("ABDGCEF");
binaryTree.preOrderTraversal(); // A B D G C E F
binaryTree.inOrderTraversal(); // D G B A E C F
binaryTree.postOrderTraversal(); // G D B E F C A
}
}
```
注:代码中使用了递归实现遍历操作。
阅读全文