二叉树的初级应用及遍历
hello大家好,我们今天要介绍的就是,Java中二叉树的初级应用 ----遍历。
话不多说先放一张图来了解一下什么是二叉树
这是我自己画的一张简单的二叉树图像,说到二叉树,首先我们要了解什么才是二叉树,在这里给他下一个定义:在计算器科学中,树(英语:tree)是一种抽象数据类型或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
①每个节点有零个或多个子节点;
②没有父节点的节点称为根节点;
③每一个非根节点有且只有一个父节点;
④除了根节点外,每个子节点可以分为多个不相交的子树;
满足这些条件后,我们就可以称它为二叉树了。
建立二叉树
在给每个数据添加进二叉树时,也和链表类似,需要创建节点,不同的是,前者有两个指针域,代表左右子树,如下:
然后我们就要建立一个简单的二叉树,话不多说,放个程序:
public class Mainclass {
public static void main(String[] args) {
TreeNode root = null;
root = new TreeNode();
root.setData(“A”);
TreeNode L1 = new TreeNode();
L1.setData("B");
root.setLeft(L1);
TreeNode R1 = new TreeNode();
R1.setData("C");
root.setRight(R1);
TreeNode L1L2 = new TreeNode();
L1L2.setData("D");
L1.setLeft(L1L2);
TreeNode L1R2 = new TreeNode();
L1R2.setData("E");
L1.setRight(L1R2);
TreeNode R1L2 = new TreeNode();
R1L2.setData("F");
R1.setLeft(R1L2);
TreeNode R1R2 = new TreeNode();
R1R2.setData("G");
R1.setRight(R1R2);
TreeNode L1R2L3 = new TreeNode();
L1R2L3.setData("H");
L1R2.setLeft(L1R2L3);
TreeNode R1L2R3 = new TreeNode();
R1L2R3.setData("I");
R1L2.setRight(R1L2R3);
}
在经历过简单的建立之后,我们的二叉树就建立好了,下一步我们要做的就是对二叉树进行前中后序的遍历,以下是前中后序的程序:
Bianli{
/**
* 先序遍历
*/
public void xianxu (TreeNode root){
if(root !=null)
System.out.print(root.getData());
if(root.getLeft() != null)
xianxu(root.getLeft());
if(root.getRight() != null)
xianxu(root.getRight());
}
/**
* 中序遍历
*/
public void zhongxu(TreeNode root) {
if (root.getLeft() != null)
zhongxu(root.getLeft());
if (root != null)
System.out.print(root.getData());
if (root.getRight() != null)
zhongxu(root.getRight());
}
/**
* 后序遍历
*/
public void houxu(TreeNode root) {
if (root.getLeft() != null)
houxu(root.getLeft());
if (root.getRight() != null)
houxu(root.getRight());
if (root != null)
System.out.print(root.getData());
}
不要忘记在输出之前的静态引用:
System.out.println("先序:");
new Bianli().xianxu(root);
System.out.println("中序:");
new Bianli().zhongxu(root);
System.out.println("后序:");
new Bianli().houxu(root);
}
这样我们的二叉树完整遍历程序就完成了 !
最后放上结果图:
nice!