二叉树排序(前序、中序、后序)

来源:互联网 发布:淘宝上的台式机 编辑:程序博客网 时间:2024/06/04 23:21

可以先查看递归思想1递归思想2


package cn.com.tree;/** * 二叉树类 * */public class Tree {public String data;//数据public Tree leftChild;public Tree rightChild;public Tree(String data) {super();this.data = data;}public Tree( String data, Tree leftChild, Tree rightChild, boolean visited) {super();this.data = data;this.leftChild = leftChild;this.rightChild = rightChild;}}



package cn.com.tree;public class Test2 {private  Tree tree  = null;public Test2(){tree = new Tree("A");    //构建一个父节点}/** * 创建一个树 *      A * B   C * DE  FG * @param tree */public  void createTree(Tree tree){Tree tB = new Tree("B");Tree tC = new Tree("C");Tree tD = new Tree("D");Tree tE = new Tree("E");Tree tF = new Tree("F");Tree tG = new Tree("G");tree.leftChild = tB;tree.rightChild = tC;tree.leftChild.rightChild = tE;tree.leftChild.leftChild = tD;tree.rightChild.rightChild = tG;tree.rightChild.leftChild = tF;}/** * 获取访问的数据 */public void getData(Tree tree){System.out.print(tree.data+"-");}/** * 前序遍历 * @param tree */public void preVisit(Tree tree){if(tree==null){return;}getData(tree);preVisit(tree.leftChild);preVisit(tree.rightChild);}/** * 中序遍历 * @param tree */public void innnerVisit(Tree tree){if(tree==null){return;}innnerVisit(tree.leftChild);getData(tree);innnerVisit(tree.rightChild);}/** * 后序遍历 * @param tree */public void lastVisit(Tree tree){if(tree==null){return;}lastVisit(tree.leftChild);lastVisit(tree.rightChild);getData(tree);}/** * 测试 * @param args */public static void main(String[] args){Test2 test = new Test2();test.createTree(test.tree);System.out.println("先序遍历");test.preVisit(test.tree);System.out.println("中序遍历");test.innnerVisit(test.tree);System.out.println("后序遍历");test.lastVisit(test.tree);}}
测试结果:

先序遍历A-B-D-E-C-F-G-中序遍历D-B-E-A-F-C-G-后序遍历D-E-B-F-G-C-A-


原创粉丝点击