二叉树的设计与遍历
目的和要求:
(1)正确定义二叉树结点
(2)掌握定义二叉树的方法
(3)掌握采用先序创建二叉树的方法
(4)掌握二叉树的先序、中序和后序遍历算法
实验原理及内容:
(1)二叉树的定义;
(2)采用先序创建二叉树
(3)二叉树的先序、中序和后序遍历算法实现
实验步骤:
(1)二叉树的定义;
(2)采用先序创建二叉树
(3)二叉树的先序、中序和后序遍历算法实现
实验过程:
(一)实训说明
本实训给出了二叉树方法集合,即接口,同时提供了二叉树结点的定义,对于二叉树,提供了先序创建二叉树的方法,通过调用该方法,即可创建二叉树。
要求完成二叉树的先序、中序和后序遍历算法。
第二个代码纯属转载,注转载地址如下:
http://www.cnblogs.com/CherishFX/p/4617105.html
再注:
第一个为学习代码,测试的添加的图形为下面的二叉树。此为按图添加。
第二个为使用代码,添加的图形可以任意。
第一个代码测试类添加的固定代码如下:
第一个学习代码如下:
(1)二叉树结点定义
/*
* 二叉树结点定义
*/
public class TreeNode<E> {
// 属性
private E data; // 结点元素值
private TreeNode<E> lchild; // 左孩子结点
private TreeNode<E> rchild; // 右孩子结点
// get和set方法
public E getData() {
return data;
}
public void setData(E data) {
this.data = data;
}
public TreeNode<E> getLchild() {
return lchild;
}
public void setLchild(TreeNode<E> lchild) {
this.lchild = lchild;
}
public TreeNode<E> getRchild() {
return rchild;
}
public void setRchild(TreeNode<E> rchild) {
this.rchild = rchild;
}
// 构造方法,三个参数
public TreeNode(E data, TreeNode<E> lchild, TreeNode<E> rchild) {
this.data = data;
this.lchild = lchild;
this.rchild = rchild;
}
// 构造方法,三个参数
public TreeNode(E data) {
this.data = data;
this.lchild = this.rchild = null;
}
// 构造方法,无参数
public TreeNode() {
this(null);
}
}
}
(2)二叉树的操作接口定义
public interface IBiTree<E> {
void create(E val, TreeNode<E>l, TreeNode<E> r); //以val为根节点元素,l和r为左右子树构造二叉树
void insertL(E val, TreeNode<E> p); //将元素插入p的左子树
void insertR(E val, TreeNode<E> p); //将