java数据结构之二叉树的实现
java二叉树的简单实现,可以简单实现深度为n的二叉树的建立,二叉树的前序遍历,中序遍历,后序遍历输出。
/**
*数据结构之树的实现
*2016/4/29
*
**/
package cn.Link; public class Tree {
Node head = new Node();
Tree(){} //内部节点类
class Node{
String date;
Node left;
Node right;
Node(){ }
Node(String date){
this.date = date;
this.left = null;
this.right = null;
}
} //给深度为n的满二叉树添加数据 n表示数的深度
public void addTree(Node preNode,int n){
if(n ==1) return;
preNode.date = "sum"+n;
Node preNodeLeft = new Node();
Node preNodeRight = new Node(); preNode.left = preNodeLeft;
addTree(preNodeLeft,n-1);
preNode.right = preNodeRight;
addTree(preNodeRight,n-1);
} //前序遍历二叉树 并输出
public void printTreePre(Node preNode){
if(preNode == null) return;
if(preNode.left!=null || preNode.right!=null)
System.out.print(preNode.date+" "); printTreePre(preNode.left);
printTreePre(preNode.right);
} //中序遍历二叉树 并输出
public void printTreeAmong(Node preNode){
if(preNode == null) return;
printTreeAmong(preNode.left);
if(preNode.left!=null || preNode.right!=null)
System.out.print(preNode.date+" ");
printTreeAmong(preNode.right);
} //后序遍历二叉树 并输出
public void printTreeRear(Node preNode){
if(preNode == null) return;
printTreeRear(preNode.left);
printTreeRear(preNode.right); if(preNode.left!=null || preNode.right!=null)
System.out.print(preNode.date+" ");
} //测试函数
public static void main(String [] args){
Tree tree = new Tree();
tree.addTree(tree.head,4);
System.out.println("================前序遍历================");
tree.printTreePre(tree.head);
System.out.println();
System.out.println("================中序遍历===============");
tree.printTreeAmong(tree.head);
System.out.println();
System.out.println("================后序遍历===============");
tree.printTreeRear(tree.head);
System.out.println();
System.out.println("============手工输出所有数据===========");
System.out.println(tree.head.date);
System.out.println(tree.head.left.date+" "+tree.head.right.date);
System.out.println(tree.head.left.left.date+" "+tree.head.left.right.date+" "+tree.head.right.left.date+" "+tree.head.right.right.date);
}
}
java数据结构之二叉树的实现的更多相关文章
- Java数据结构之二叉树的基本介绍与递归遍历
二叉树的基本概念: 正如我们所了解的,树是有很多中形态,但是我们规定,形如每个节点最多只能有两个子节点的一种形如称为二叉树.我们将二叉树中该节点的两个子节点分别称作为:左孩子节点和右孩子节点.该节点称 ...
- JAVA数据结构之二叉树
用树作为存储数据的结构兼具像数组一样查询速度快和像链表一样具有很快的插入和删除数据项的优点 我们用圆点表示节点,连接圆的直线表示边如下图所示就表示了一颗树,接下来我们讨论的二叉树即每个节点最多只有两个 ...
- java数据结构之二叉树遍历的非递归实现
算法概述递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍历算法.非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似.对 ...
- java数据结构之二叉树的定义和递归实现
定义最多有两棵子树的有序树,称为二叉树.二叉树是一种特殊的树.递归定义:二叉树是n(n>=0)个有限结点构成的集合.N=0称为空二叉树:n>0的二叉树由一个根结点和两互不相交的,分别称为左 ...
- Java数据结构之树和二叉树(2)
从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...
- Java数据结构之树和二叉树
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- Java数据结构和算法 - 二叉树
前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...
- Java数据结构和算法(六)--二叉树
什么是树? 上面图例就是一个树,用圆代表节点,连接圆的直线代表边.树的顶端总有一个节点,通过它连接第二层的节点,然后第二层连向更下一层的节点,以此递推 ,所以树的顶端小,底部大.和现实中的树是相反的, ...
- 【java 数据结构】还不会二叉树?一篇搞定二叉树
二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历. 你能get到的知识点? 1.树的介绍 2.二叉树的介绍 3.二叉树遍历的四 ...
随机推荐
- The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
消息筛选器显示应用程序正在使用中. ((错误来自 HRESULT:0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) 在对Word文档进行合并或者其他操作的时候,如果数 ...
- OC之消息调用过程
Bird * aBird = [[Bird alloc] init]; [aBird fly]; 中对 fly 的调用,编译器通过插入一些代码,将之转换为对方法具体实现 IMP 的调用,这个 IMP ...
- NSBundle、UIImageView和UIButton对比、Xcode文档安装路径、Xcode模拟器安装路径
1.NSBundle1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹2> 利用mainBundle就可以访问软件资源包中的任何资源3> 模拟器应用程序 ...
- ECOS-Ecstore 伪静态规则
.htaccess 文件 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME ...
- TouchSlide滚动插件BUG
TouchSlide滚动切换效果时 nextCell设定自己的class名后无效,需要用".next"或不设置
- 十二、oracle 数据库(表)的逻辑备份与恢复
一.介绍逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程.逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程.物理备份即可在数 ...
- 滚动条加粗和panel,gridControl结合用
private void FrmLotterycs_Load(object sender, EventArgs e) { t = 0; UserJuanquanTB = O.get_UserJuanq ...
- JS获取当前使用的浏览器名字以及版本号
JS获取当前使用的浏览器名字以及版本号 工作中需要通过JS去获取当前使用的浏览器的名字以及版本号,网上大堆资料都有一个关键词是 navigator.appName,但是这个方法获取的浏览器的名字只有两 ...
- mybatis------xml的一些规范等
转与拼接: MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML ...
- javaWeb知识的回顾
16年7月毕业,现在工作也有3个多月了.一直是在做一些增删改查,技术上没有太大的突破,自己总结下原因,还是原理理解的不够透彻,地基没打好就盖不成高楼. 在51cto上找到了佟刚老师的视频,快进游览一遍 ...