JAVA数据结构---二叉树入门
2016-03-16 18:04
441 查看
本程序分为四个文件:
节点类:Node.java
二叉树类:BinaryTree.java
访问类:Visit.java
主类测试:MainTest.java
(1)Node.java
(2)BinaryTree.java
(3)Visit.java
(4)MainTest.java
(5)测试结果
节点类:Node.java
二叉树类:BinaryTree.java
访问类:Visit.java
主类测试:MainTest.java
(1)Node.java
public class Node<T> { public T data; private Node<T> left; private Node<T> right; // 初始化构造 public Node() { left = null; right = null; } public Node(T tt, Node<T> lef, Node<T> rig) { data = tt; left = lef; right = rig; } // get方法 public T getT() { return data; } public Node<T> getLeft() { return left; } public Node<T> getRight() { return right; } }
(2)BinaryTree.java
public class BinaryTree<T> { private Node<T> root; private void preOrder(Node<T> t, Visit vs) { if (t != null) { vs.print(t.data); preOrder(t.getLeft(), vs); preOrder(t.getRight(), vs); } } private void midOrder(Node<T> t, Visit vs) { if (t != null) { midOrder(t.getLeft(), vs); vs.print(t.data); midOrder(t.getRight(), vs); } } private void postOrder(Node<T> t, Visit vs) { if (t != null) { postOrder(t.getLeft(), vs); postOrder(t.getRight(), vs); vs.print(t.data); } } public BinaryTree() { root = null; } public BinaryTree(T tt, BinaryTree<T> lef, BinaryTree<T> rig) { Node<T> l, r; if (lef == null) l = null; else l = lef.root; if (rig == null) r = null; els 4000 e r = rig.root; root = new Node<T>(tt, l, r); } public void preOrder(Visit vs) { preOrder(root, vs); } public void midOrder(Visit vs) { midOrder(root, vs); } public void postOrder(Visit vs) { postOrder(root, vs); } }
(3)Visit.java
public class Visit { public void print(Object item) { System.out.print(item + " "); } }
(4)MainTest.java
public class MainTest { public static void main(String[] args) { BinaryTree<String> g = new BinaryTree<String>("G", null, null); BinaryTree<String> d = new BinaryTree<String>("D", null, g); BinaryTree<String> b = new BinaryTree<String>("B", d, null); BinaryTree<String> e = new BinaryTree<String>("E", null, null); BinaryTree<String> f = new BinaryTree<String>("F", null, null); BinaryTree<String> c = new BinaryTree<String>("C", e, f); BinaryTree<String> a = new BinaryTree<String>("A", b, c); Visit vs = new Visit(); System.out.println("前序遍历的结果是:"); a.preOrder(vs); System.out.println(); System.out.println("中序遍历的结果是:"); a.midOrder(vs); System.out.println(); System.out.println("后序遍历的结果是:"); a.postOrder(vs); System.out.println(); } }
(5)测试结果
前序遍历的结果是: A B D G C E F 中序遍历的结果是: D G B A E C F 后序遍历的结果是: G D B E F C A
相关文章推荐
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- JAVA数据结构---二叉树入门
- 数据结构之树之不同种类篇
- 数据结构中几种常见的排序方法
- 插入排序
- 数据结构(10)线性表之双向链表
- 数据结构与算法学习笔记(五)
- 数据结构之二叉搜索树/二叉查找数/有序二叉树/排序二叉树
- 老司机解说Go语言之数据结构
- 复杂度问题
- Java数据结构笔记3——MyArrayList
- 复杂数据结构(三 )图
- 数据结构(9)线性表之循环链表介绍
- 数据结构(8)线性表之静态链表
- 隐匿在数据结构背后的原理
- 经典算法与数据结构的c++实现——插入排序
- LeetCode动态规划198. House Robber思路解析
- 【数据结构与算法】(六) c 语言实现简单的二叉树静态创建及先序、中序、后序遍历