java二叉树的简单实现,可以简单实现深度为n的二叉树的建立,二叉树的前序遍历,中序遍历,后序遍历输出。

  1. /**
  2. *数据结构之树的实现
  3. *2016/4/29
  4. *
  5. **/
  6. package cn.Link;
  7.  
  8. public class Tree {
  9. Node head = new Node();
  10. Tree(){}
  11.  
  12. //内部节点类
  13. class Node{
  14. String date;
  15. Node left;
  16. Node right;
  17. Node(){ }
  18. Node(String date){
  19. this.date = date;
  20. this.left = null;
  21. this.right = null;
  22. }
  23. }
  24.  
  25. //给深度为n的满二叉树添加数据 n表示数的深度
  26. public void addTree(Node preNode,int n){
  27. if(n ==1) return;
  28. preNode.date = "sum"+n;
  29. Node preNodeLeft = new Node();
  30. Node preNodeRight = new Node();
  31.  
  32. preNode.left = preNodeLeft;
  33. addTree(preNodeLeft,n-1);
  34. preNode.right = preNodeRight;
  35. addTree(preNodeRight,n-1);
  36. }
  37.  
  38. //前序遍历二叉树 并输出
  39. public void printTreePre(Node preNode){
  40. if(preNode == null) return;
  41. if(preNode.left!=null || preNode.right!=null)
  42. System.out.print(preNode.date+" ");
  43.  
  44. printTreePre(preNode.left);
  45. printTreePre(preNode.right);
  46. }
  47.  
  48. //中序遍历二叉树 并输出
  49. public void printTreeAmong(Node preNode){
  50. if(preNode == null) return;
  51. printTreeAmong(preNode.left);
  52. if(preNode.left!=null || preNode.right!=null)
  53. System.out.print(preNode.date+" ");
  54. printTreeAmong(preNode.right);
  55. }
  56.  
  57. //后序遍历二叉树 并输出
  58. public void printTreeRear(Node preNode){
  59. if(preNode == null) return;
  60. printTreeRear(preNode.left);
  61. printTreeRear(preNode.right);
  62.  
  63. if(preNode.left!=null || preNode.right!=null)
  64. System.out.print(preNode.date+" ");
  65. }
  66.  
  67. //测试函数
  68. public static void main(String [] args){
  69. Tree tree = new Tree();
  70. tree.addTree(tree.head,4);
  71. System.out.println("================前序遍历================");
  72. tree.printTreePre(tree.head);
  73. System.out.println();
  74. System.out.println("================中序遍历===============");
  75. tree.printTreeAmong(tree.head);
  76. System.out.println();
  77. System.out.println("================后序遍历===============");
  78. tree.printTreeRear(tree.head);
  79. System.out.println();
  80. System.out.println("============手工输出所有数据===========");
  81. System.out.println(tree.head.date);
  82. System.out.println(tree.head.left.date+" "+tree.head.right.date);
  83. System.out.println(tree.head.left.left.date+" "+tree.head.left.right.date+" "+tree.head.right.left.date+" "+tree.head.right.right.date);
  84. }
  85. }

java数据结构之二叉树的实现的更多相关文章

  1. Java数据结构之二叉树的基本介绍与递归遍历

    二叉树的基本概念: 正如我们所了解的,树是有很多中形态,但是我们规定,形如每个节点最多只能有两个子节点的一种形如称为二叉树.我们将二叉树中该节点的两个子节点分别称作为:左孩子节点和右孩子节点.该节点称 ...

  2. JAVA数据结构之二叉树

    用树作为存储数据的结构兼具像数组一样查询速度快和像链表一样具有很快的插入和删除数据项的优点 我们用圆点表示节点,连接圆的直线表示边如下图所示就表示了一颗树,接下来我们讨论的二叉树即每个节点最多只有两个 ...

  3. java数据结构之二叉树遍历的非递归实现

    算法概述递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍历算法.非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似.对 ...

  4. java数据结构之二叉树的定义和递归实现

    定义最多有两棵子树的有序树,称为二叉树.二叉树是一种特殊的树.递归定义:二叉树是n(n>=0)个有限结点构成的集合.N=0称为空二叉树:n>0的二叉树由一个根结点和两互不相交的,分别称为左 ...

  5. Java数据结构之树和二叉树(2)

    从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...

  6. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  7. Java数据结构和算法 - 二叉树

    前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...

  8. Java数据结构和算法(六)--二叉树

    什么是树? 上面图例就是一个树,用圆代表节点,连接圆的直线代表边.树的顶端总有一个节点,通过它连接第二层的节点,然后第二层连向更下一层的节点,以此递推 ,所以树的顶端小,底部大.和现实中的树是相反的, ...

  9. 【java 数据结构】还不会二叉树?一篇搞定二叉树

    二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历. 你能get到的知识点? 1.树的介绍 2.二叉树的介绍 3.二叉树遍历的四 ...

随机推荐

  1. 自己写的POIUtil,主要解决从不同的HSSFWorkbook复制sheet以及根据单元格插入图片等

    复制sheet的原始代码网上找的,但是小问题很多,然后自己动手改了一下: 根据单元格信息动态插入图片,如果单元格有文字,图片的位置会在文字之后,如果同样的位置已有图片则会往下插入. import or ...

  2. UNIX基础--控制台和终端

    虚拟控制台和终端 Virtual Consoles and Terminals: FreeBSD 虚拟控制台的默认配置为8个,但并不是硬性设置, 您可以很容易设置虚拟控制台的个数增多或减少. 虚拟控制 ...

  3. ckeditor 插件

    dialog 下面 建立一个 插件.js CKEDITOR.dialog.add("about", function (a) { var aaa = "<form& ...

  4. C++中构造函数或析构函数定义为private

    转自:http://www.blogjava.net/fhtdy2004/archive/2009/05/30/278971.html 很多情况下要求当前的程序中只有一个object.例如一个程序只有 ...

  5. NYOJ-791 Color the fence (贪心)

    Color the fence 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Tom has fallen in love with Mary. Now Tom w ...

  6. Stash安装和破解

    参考资料: http://www.unxmail.com/?p=590 上篇介绍了,Atlassian Stash v2.12.1 破解版的下载, 有同学不会安装. 我重新整理了下文档. 表述我的安装 ...

  7. Quartz(任务调度)- 入门学习

    参照:http://blog.csdn.net/szwangdf/article/details/6158646 1.自定义定时任务管理类 QuartzManager 参照大神基础上新增:1.添加jo ...

  8. JPA 系列教程19-jpa-uuid主键生成策略

    ddl语句 CREATE TABLE `t_user` ( `id` varchar(32) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY K ...

  9. Zend Studio配合Xdebug调试

    以下配置均在windows环境下. 1.下载xdebug 使用phpinfo()查看当前php的版本信息: 到xdebug下载页面下载对应的xdebug版本:   将解压出的php_xdebug-2. ...

  10. CentOS7 emacs安装

    首先安装依赖库 依赖库:   yum install gcc*   yum install glib*   yum install gtk*   yum install ncurses*   yum ...