Java链表来存储二叉树和(前中后序)遍历二叉树--Java版
来源:互联网 发布:命运交响曲 知乎 编辑:程序博客网 时间:2024/06/10 23:57
全二叉树展示
- 前根序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。遍历的顺序为:ABDGHCEIF
2.中根序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。遍历的顺序为:GDHBAEICF
3.后根序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。遍历的顺序为:GHDBIEFCA
package com.datastructure;/** * Created by silentwolf on 2017/4/18. *//** * 需求: * 1、使用链表来存储二叉树 * 2、实现二叉树的创建、前序遍历、中序遍历和后序遍历 * * 步骤: * 1、建立Node节点的类,设置leftChild,rightChild,data属性 * 2、建立数组,使用递归创建二叉树,方法为buildTree() * 3、main函数中调用buildTree(),第一次确定根节点数据 * 4、main函数中调用buildTree(),第二次确定根节点的左节点还是右节点 * 5、循环第4部,再buildTree()使用递归,判断节点数据的左节点还是右节点 * 6、4,5步骤之后,链表来存储二叉树完成 * 7、递归遍历:前序、中序、后续节点 **/public class BinTreeInt { private Node root; /** * 创建内部节点类 **/ private class Node{ // 左节点 private Node leftChild; // 右节点 private Node rightChild; // 节点对应的值 private int data; public Node(int data){ this.leftChild = null; this.rightChild = null; this.data = data; } }// class Node public BinTreeInt(){ root = null; } /* *递归:创建二叉树 * */ public void buildTree(Node node ,int data){ if (root == null){// 如果根节点为空,创建根节点 root = new Node(data); }else{ if(data <node.data){ //插入到左子树 System.out.println("node.data"); if(node.leftChild == null){ //左节点为空,直接创建值为data的左节点 node.leftChild = new Node(data); }else{ //左节点不为空,调用buildTree函数插到左子树中 buildTree(node.leftChild,data); } }else{ //插入到右子树 if(node.rightChild == null){ node.rightChild = new Node(data); }else{ buildTree(node.rightChild,data); } } } } /* *递归:前序遍历二叉树 * */ public void preOrder(Node node){ if(node != null){ System.out.print(node.data); preOrder(node.leftChild); preOrder(node.rightChild); } } /* *递归:中序遍历二叉树 * */ public void inOrder(Node node){ if(node != null){ inOrder(node.leftChild); System.out.print(node.data); inOrder(node.rightChild); } } /* *递归:后序遍历二叉树 * */ public void postOrder(Node node){ if(node != null){ postOrder(node.leftChild); postOrder(node.rightChild); System.out.print(node.data); } } public static void main(String ars[]){ int[] a={2,4,12,45,21,6,111}; BinTreeInt binTree = new BinTreeInt(); for(int i = 0; i<a.length; i++){ binTree.buildTree(binTree.root, a[i]); } System.out.print("前序遍历"); binTree.preOrder(binTree.root); System.out.println(""); System.out.print("中序遍历"); binTree.inOrder(binTree.root); System.out.println(""); System.out.print("后序遍历"); binTree.postOrder(binTree.root); }}
执行结果:
前序遍历241264521111
中序遍历246122145111
后序遍历621111451242
如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!
阅读全文
2 0
- Java链表来存储二叉树和(前中后序)遍历二叉树--Java版
- Java 遍历二叉树(前中后序)
- java二叉树遍历
- Java 二叉树遍历
- java遍历二叉树
- JAVA 二叉树遍历
- java 二叉树遍历
- JAVA遍历二叉树
- JAVA遍历二叉树
- 二叉树java遍历
- Java二叉树遍历
- JAVA 二叉树遍历
- Java二叉树遍历
- 二叉树遍历 java
- 二叉树创建和遍历(Java版实现)
- java数据结构二叉树的遍历和二叉查找树
- java 二叉树的实现 和遍历
- java实现二叉树创建和遍历
- [YTU]_2613( 距离产生美)
- wsdl生成客户端代码
- C#编程向SQLite数据库中正确写入DateTime类型数据
- 026-Java-017
- 欢迎使用CSDN-markdown编辑器
- Java链表来存储二叉树和(前中后序)遍历二叉树--Java版
- Android中asset文件夹和raw文件夹区别与用法
- Echarts 数据统计折线图
- cocos 单例模式 链接
- GC垃圾回收机制
- June Challenge 2017 | Xenny and Coin Rankings
- Error while updating property 'nativeBackgroundAndroid' of a view managed by:RCTView
- [YTU]_2914 ( xiaoping学构造函数)
- JQuery中的parent