Skip to content

Commit c526ad7

Browse files
committed
二叉树的构建及相关操作
1 parent c62940b commit c526ad7

3 files changed

Lines changed: 629 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package cn.edu.tju.rico.test;
2+
3+
import cn.edu.tju.rico.tree.BinaryTree;
4+
5+
public class BinaryTreeTest {
6+
public static void main(String[] args) {
7+
BinaryTree<Character> tree = new BinaryTree<Character>();
8+
tree.createBinaryTree("A(B(D,E(G(I,J),M)),C(F(,H(,K)),))");
9+
10+
System.out.println();
11+
System.out.println("tree的层次(广序)遍历 : " + tree.levelOrder());
12+
System.out.println("\n----------------------------------------------\n");
13+
System.out.println("tree的前序遍历 (递归): " + tree.preOrder(tree.getRoot()));
14+
System.out.println("tree的前序遍历 (迭代): " + tree.preOrder());
15+
System.out.println("\n----------------------------------------------\n");
16+
17+
System.out.println("tree的中序遍历 (递归): " + tree.inOrder(tree.getRoot()));
18+
System.out.println("tree的中序遍历 (迭代): " + tree.inOrder());
19+
System.out.println("\n----------------------------------------------\n");
20+
21+
System.out.println("tree的后序遍历 (递归): " + tree.postOrder(tree.getRoot()));
22+
System.out.println("tree的后序遍历 (迭代): " + tree.postOrder());
23+
System.out.println("\n----------------------------------------------\n");
24+
25+
System.out.println("tree的根结点 : " + tree.getRoot());
26+
System.out.println("\n----------------------------------------------\n");
27+
28+
System.out.println("tree的高度 : " + tree.height(tree.getRoot()));
29+
System.out.println("\n----------------------------------------------\n");
30+
31+
System.out.println("tree的结点数 : " + tree.size(tree.getRoot()));
32+
System.out.println("\n----------------------------------------------\n");
33+
34+
// 复制并构造树
35+
BinaryTree<Character> tree2 = new BinaryTree<Character>(tree.getRoot());
36+
System.out.println("tree为 : " + tree.printBinaryTree(tree.getRoot()));
37+
System.out.println("复制tree为tree2 : " + tree2.printBinaryTree(tree2.getRoot()));
38+
// 判断 tree2 与 tree 是否相等
39+
System.out.println("tree2 与 tree 是否相等: " + tree.equals(tree2));
40+
System.out.println("\n----------------------------------------------\n");
41+
42+
// 构建tree1
43+
BinaryTree<Character> tree1 = new BinaryTree<Character>();
44+
tree1.createBinaryTree("A(B(D,E(G(I,J),)),C(F(,H(,K)),))");
45+
System.out.println("tree为 : " + tree.printBinaryTree(tree.getRoot()));
46+
System.out.println("构建tree1为 : " + tree1.printBinaryTree(tree1.getRoot()));
47+
// 判断 tree1 与 tree 是否相等
48+
System.out.println("tree1 与 tree 是否相等: " + tree.equals(tree1));
49+
System.out.println("\n----------------------------------------------\n");
50+
51+
// 根据前序遍历创建树
52+
BinaryTree<Character> tree3 = new BinaryTree<Character>(
53+
"ABC##DE#G##F###".toCharArray());
54+
System.out.println("根据前序遍历创建二叉树: " + tree3.printBinaryTree(tree3.getRoot()));
55+
System.out.println("前序遍历tree3: " + tree.preOrder(tree3.getRoot()));
56+
System.out.println("中序遍历tree3: " + tree.inOrder(tree3.getRoot()));
57+
System.out.println("后序遍历tree3: " + tree.postOrder(tree3.getRoot()));
58+
System.out.println("\n----------------------------------------------\n");
59+
60+
// 以广义表的形式打印二叉树
61+
System.out.println("以广义表的形式打印tree为 :" + tree.printBinaryTree(tree.getRoot()));
62+
System.out.println("以广义表的形式打印tree1为 :" + tree1.printBinaryTree(tree1.getRoot()));
63+
System.out.println("以广义表的形式打印tree2为 :" + tree2.printBinaryTree(tree2.getRoot()));
64+
System.out.println("以广义表的形式打印tree3为 :" + tree3.printBinaryTree(tree3.getRoot()));
65+
System.out.println("\n----------------------------------------------\n");
66+
67+
// 根据tree的先序遍历和中序遍历结果构建树
68+
String pre = tree.preOrder().replace(" ", "");
69+
String in = tree.inOrder().replace(" ", "");
70+
BinaryTree<Character> tree4 = new BinaryTree<Character>(pre, in, true);
71+
System.out.println("根据tree的先序遍历和中序遍历结果构建的tree4为 :"
72+
+ tree.printBinaryTree(tree4.getRoot()));
73+
System.out.println("tree与tree4是否相等: " + tree.equals(tree4));
74+
System.out.println("\n----------------------------------------------\n");
75+
76+
// 根据tree的中序遍历和后序遍历结果构建树
77+
String post = tree.postOrder().replace(" ", "");
78+
BinaryTree<Character> tree5 = new BinaryTree<Character>(in, post, false);
79+
System.out.println("根据tree的中序遍历和后序遍历结果构建的tree5为 :"
80+
+ tree.printBinaryTree(tree5.getRoot()));
81+
System.out.println("tree与tree5是否相等: " + tree.equals(tree5));
82+
83+
}
84+
}

0 commit comments

Comments
 (0)