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.二叉树遍历的四 ...
随机推荐
- delphi学习treeview中从表列名和数据添加为目录并双击自动选中
1 unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syst ...
- 文件传送,如此简单--ESFramework 4.0 快速上手(13)
在所有的通信系统中,文件传送是最常见也是最重要的功能之一,ESFramework对文件传送的强大支持也是其亮点之一,使用ESFramework可以非常轻松地实现与文件传送相关的所有需求.ESPlus. ...
- jquery-ui-multiselect 的使用
@model Gd.NetSign.Controllers.DTO.WsaleFundManageDTO @{ ViewBag.Title = "ShowDUYUN"; //Lay ...
- ural 1698. Square Country 5(记忆化搜索)
1698. Square Country 5 Time limit: 2.0 secondMemory limit: 64 MB The first arithmetical operation ta ...
- oc 是否允许远程通知
UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSett ...
- 复用TCP连接提升流媒体服务器之间流量转发效率
由于媒体推流客户端所在地域不同.所接入网络运营商不同.就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器 ...
- SVN ---文件加锁,执行clean up命令
一.SVN 中 clean up 的功能 当Subversion改变你的工作拷贝(或是.svn中的任何信息),它会尽可能的小心,在修改任何事情之前,它把意图写到日志文件中去,然后执行log文件中的命令 ...
- Android获取网络数据进行GZIP解压
说明:现在很多网站都会在回传数据的时候进行GZIP压缩,我们可以在请求头中申明支持GZIP压缩.可以减轻网络传输压力,Xutils中已经实现. 下面是一个DEMO,便于理解. private void ...
- jenkins 中集成JNI的坑
有包名1.生成class> javac myjni\HelloJNI.java2.生成.h文件> javah -d include myini.HelloJNI3.生成.dll文件> ...
- Redis简介二
一.直接安装 1.Windows版本的Redis下载地址:https://github.com/dmajkic/redis/downloads ,选择一个你想要下载的版本下载即可~ ...