java实现二叉树的链式存储结构、先序遍历建立二叉树、先序遍历二叉树
1、二叉树的数据结构:二叉链表
package BT;
public class BinearyTree<E> {
E data;
BinearyTree<E> lchild;
BinearyTree<E> rchild;
public BinearyTree(E data){
this.data=data;
}
}
2、先序建立二叉树:
A B D * F * * * C E * * *:*代表为null
private static BinearyTree<String> createBinaryTreeByPreorder(BinearyTree<String> bt) {
// TODO Auto-generated method stub
System.out.println("请输入当前节点的数据域:");
data=scan.nextLine();
if(data.equals("*")){
bt=null;
}else{
bt=new BinearyTree<String>(data);
bt.lchild= createBinaryTreeByPreorder(bt.lchild);
bt.rchild= createBinaryTreeByPreorder(bt.rchild);
}
return bt;
}
3、先序遍历二叉树
private static void preOrder(BinearyTree<String> root) {
// TODO Auto-generated method stub
if(root!=null) {
System.out.println(root.data);
preOrder( root.lchild);
preOrder( root.rchild);
}
}
4、测试代码:
public class CreateBinaryTreeByPreorder {
static Scanner scan;
static String data;
static {scan=new Scanner(System.in);}
public static void main(String[] args) {
// TODO Auto-generated method stub
BinearyTree<String> root = null;
root=createBinaryTreeByPreorder(root);
//System.out.println(root.lchild.data);
preOrder(root);
}
private static void preOrder(BinearyTree<String> root) {
// TODO Auto-generated method stub
if(root!=null) {
System.out.println(root.data);
preOrder( root.lchild);
preOrder( root.rchild);
}
}
private static BinearyTree<String> createBinaryTreeByPreorder(BinearyTree<String> bt) {
// TODO Auto-generated method stub
System.out.println("请输入当前节点的数据域:");
data=scan.nextLine();
if(data.equals("0")){
bt=null;
}else{
bt=new BinearyTree<String>(data);
bt.lchild= createBinaryTreeByPreorder(bt.lchild);
bt.rchild= createBinaryTreeByPreorder(bt.rchild);
}
return bt;
}
}
测试结果:
请输入当前节点的数据域:
A
请输入当前节点的数据域:
B
请输入当前节点的数据域:
D
请输入当前节点的数据域:
*
请输入当前节点的数据域:
F
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
E
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
A B D F C E