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数据结构之二叉树的实现的更多相关文章

  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. 分页加载的Fragment

    package com.z.fragment; import android.os.Bundle; import android.os.Environment; import android.supp ...

  2. Spring的Resource

    通过Spring Resource接口获取资源(取自http://haohaoxuexi.iteye.com/blog/2016305)目录1 Resource简介2 通过ResourceLoader ...

  3. Python 学习笔记7

    今天很残酷,明天很残酷,后天很美好.但绝大多数人会死在明天的路上.只有真正的勇士才能看到后天的太阳! Python学习是枯燥的.但是一定要坚持! 昨天学习了数据结构和模块. 今天学习输入和输出.错误与 ...

  4. Zookeeper 启动错误

    启动后日志如下 : 2016-09-14 05:51:19,449 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeade ...

  5. manifest中的largeHeap是干什么用的?

    转 http://blog.csdn.net/jiaoyang623/article/details/8773445 今天群里有人讨论怎么给app分配超过100M的内存,有人亮出了largeHeap参 ...

  6. Core Animation中的关键帧动画

    键帧动画就是在动画控制过程中开发者指定主要的动画状态,至于各个状态间动画如何进行则由系统自动运算补充(每两个关键帧之间系统形成的动画称为“补间动画”),这种动画的好处就是开发者不用逐个控制每个动画帧, ...

  7. 在自学php的路上不知道怎么走!!

    在自学php的路上不知道怎么走!! 真希望有人给我指点一二!!!

  8. mipi 调试经验(转)

    以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点: 一.D-PHY 1.传输模式 LP(Low-Power) 模式:用于传输控制 ...

  9. url操作一网打尽(一)

    1:url实际应用简介 近期研究发现通过url传递参数很普遍的(淘宝也是这样做的), 通过修改url来传递参数,比如通过关键字搜索某件商品的时候,链接便追加了相应参数.在请求接口的时候直接对url进行 ...

  10. hdu_3966_Aragorn's Story(树链剖分裸题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题意:给你一棵树,然后给定点之间的路径权值修改,最后单点查询 题解:树链剖分裸题,这里我用树状数 ...