JAVA数据结构代码

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
常用结构:数组、栈、队列、链表、树、图、堆、散列表

代码文件下载地址:JAVA数据结构代码

用链式存储结构表示以下的一棵树,并用前序、中序或后序算法输出该树的结点。

 

public class BinTree { // 二叉树类

         private BinTreeNode root;

         BinTree() { // 构造方法

                   root = null;

         }

         BinTree(Object item, BinTree left, BinTree right) { // 构造方法

                   BinTreeNode l = null, r = null;

                   if (left == null)

                            l = null;

                   else

                            l = left.root;

                   if (right == null)

                            r = null;

                   else

                            r = right.root;

                   root = new BinTreeNode(item, l, r);

         }

         public boolean root(Object x) { // 返回根结点元素函数

                   if (root != null) {

                            x = root.getData();

                            return true;

                   } else

                            return false;

         }

         public void MakeTree(Object x, BinTree left, BinTree right) { // 创建二叉树

                   if (root != null || left == right)

                            return;

                   root = new BinTreeNode(x, left.root, right.root);

                   left.root = null;

                   right.root = null;

         }

         public void BreakTree(Object x, BinTree left, BinTree right) { // 删除二叉树

                   if (root == null || left == right || left.root != null

                                     || right.root != null)

                            return;

                   x = root.getData();

                   left.root = root.getLeft();

                   right.root = root.getLeft();

                   // delete root;

                   root = null;

         }

         public static void PreOrder(BinTreeNode r, Visit vs) {// 前序遍历二叉树

                   if (r != null) {

                            vs.print(r.data);

                            PreOrder(r.getLeft(), vs);

                            PreOrder(r.getRight(), vs);

                   }

         }

         public static void InOrder(BinTreeNode r, Visit vs) {// 中序遍历二叉树

                   if (r != null) {

                            InOrder(r.getLeft(), vs);

                            vs.print(r.data);

                            InOrder(r.getRight(), vs);

                   }

         }

         public static void PostOrder(BinTreeNode r, Visit vs) { // 后序遍历二叉树

                   if (r != null) {

                            PostOrder(r.getLeft(), vs);

                            PostOrder(r.getRight(), vs);

                            vs.print(r.data);

                   }

         }

         public static void LevelOrder(BinTreeNode r, Visit vs) // 层次遍历二叉树

                            throws Exception {

                   java.util.Queue<BinTreeNode> q = new java.util.LinkedList<BinTreeNode>();

                   if (r == null)

                            return;

                   BinTreeNode current;

                   q.add(r);

                   while (!q.isEmpty()) {

                            current = (BinTreeNode) q.remove();

                            vs.print(current.data);

                            if (current.getLeft() != null)

                                     q.add(current.getLeft());

                            if (current.getRight() != null)

                                     q.add(current.getRight());

                   }

         }

}

 

public class BinTreeNode {  // 二叉树结点类

         private BinTreeNode lChild;  // 左孩子结点对象引用

         private BinTreeNode rChild;  // 右孩子结点对象引用

         public Object data;   // 数据元素

         BinTreeNode() {  // 构造二叉树结点

                   lChild = null;

                   rChild = null;

         }

         BinTreeNode(Object item, BinTreeNode left, BinTreeNode right) {   // 构造二叉树结点

                   data = item;

                   lChild = left;

                   rChild = right;

         }

         BinTreeNode(Object item) {     // 构造二叉树结点

                   data = item;

                   lChild = null;

                   rChild = null;

         }

         public BinTreeNode getLeft() { // 返回左孩子

                   return lChild;

         }

         public BinTreeNode getRight() { // 返回右孩子

                   return rChild;

         }

         public Object getData() { // 返回数据元素

                   return data;

         }

         public void setLeft(BinTreeNode left) { // 设置左孩子

                   lChild = left;

         }

         public void setRight(BinTreeNode right) { // 设置右孩子

                   rChild = right;

         }                

}

 

public class Visit {  //输出显示类

         public void print(Object item) {

                   System.out.print(item + " ");

         }

         public static void main(String args[]) throws Exception {

                   BinTreeNode D = new BinTreeNode("D", null, null);

                   BinTreeNode B = new BinTreeNode("B", D, null);

                   BinTreeNode E = new BinTreeNode("E", null, null);

                   BinTreeNode F = new BinTreeNode("F", null, null);

                   BinTreeNode C = new BinTreeNode("C", E, F);

                   BinTreeNode A = new BinTreeNode("A", B, C);

                   Visit vs = new Visit();

                   System.out.print("前序遍历:");

                   BinTree.PreOrder(A, vs);

                   System.out.println();

                   System.out.print("中序遍历:");

                   BinTree.InOrder(A, vs);

                   System.out.println();

                   System.out.print("后序遍历:");

                   BinTree.PostOrder(A, vs);

                   System.out.println();

                   System.out.print("层次遍历:");

                   BinTree.LevelOrder(A, vs);

         }

}

 

 

 

 

猜你喜欢

转载自blog.csdn.net/u010523267/article/details/83307774