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