JAVA块大作业
代码部分
- 封装二叉树结点
public class BitreeNode {
private BitreeNode left=null;
private BitreeNode right=null;
private BitreeNode root=null;
private String data;
public BitreeNode getRoot() {
return root;
}
public void setRoot(BitreeNode root) {
this.root = root;
}
public void setLeft(BitreeNode left) {
this.left = left;
}
public void setRight(BitreeNode right) {
this.right = right;
}
public void setData(String data) {
this.data = data;
}
public BitreeNode getLeft() {
return left;
}
public BitreeNode getRight() {
return right;
}
public String getData() {
return data;
}
}
- 封装二叉树类
import java.util.Scanner;
public class Bitree {
/**
创建二叉树
*/
private BitreeNode create() {
BitreeNode root;
Scanner input = new Scanner(System.in);
String n = input.next();
if(!n.equals("#")){
root=new BitreeNode();
root.setData(n);
root.setLeft(create());
root.setRight(create());
}
else{root=null;}
return root;
}
/**
提供用户使用方法
*/
public BitreeNode createBitree(){
return create();
}
}
- 实现类
public class operate {
/**
先序遍历
*/
public static void preorder(BitreeNode root){
if(root!=null){
System.out.print(root.getData());
preorder(root.getLeft());
preorder(root.getRight());
}
}
/**
中序遍历
*/
public static void inorder(BitreeNode root){
if (root!=null){
inorder(root.getLeft());
System.out.print(root.getData());
inorder(root.getRight());
}
}
/**
后序遍历
*/
public static void afterorder(BitreeNode root){
if (root!=null){
afterorder(root.getLeft());
afterorder(root.getRight());
System.out.print(root.getData());
}
}
/**
简单的一些操作
*/
public static void main(String[] args) {
BitreeNode T =new BitreeNode();
T.setRoot(new Bitree().createBitree());
preorder(T.getRoot());
System.out.println(" ");
inorder(T.getRoot());
System.out.println(" ");
afterorder(T.getRoot());
System.out.println(" ");
}
}
设计思路
- 题目要求封装一个熟悉的数据结构,转而就联想到了二叉树
- 于是打算封装一个简单的二叉树
- 用链表存储二叉树,首先封装二叉树的结点,private变量为左右孩子left,right,根root,以及该节点存放的数据data
- 用get和set提供可供用户使用的方法
- 然后封装二叉树,用递归的算法建立二叉树,将该方法设为private,同时创建一个可供用户使用的方法;二叉树的封装就完成了
- 接着用封装的二叉树去实现一些简单的算法,即先序遍历,中序遍历和后序遍历
困难和解决思路
**困难:**在调试程序的时候发现,无论输入哪一组数据都没有输出
解决思路:网络搜索明白了二叉树的输入格式应当如下
心得体会
简单的封装一个数据结构并不难,但也许是我对封装的理解不够深入,并不会用高级的方法封装一个数据结构。而对于封装来说,如何去正确的使用也极为重要,要思考如