4叉树java语言实现_java语言实现二叉树

java语言实现二叉树

java语言实现二叉树

一、概念

对于大量的输入数据,链表的线性访问时间太慢,不宜使用。树这种结构极大的缩短了数据的访问时间。什么是树呢?它是怎么做到提高访问效率的呢?树可以用几种方式定义,定义树的一种自然方式是递归方式,一棵树是一些节点的集合,这些集合可以是空集;若不是空集,则树由根(root)节点以及n(n>=0)个子(child)节点组成,这些子节点每一个都有来自根节点的一条有向边(edge)所连接。

b0c4c814043459ace649f57ae3facbf0.png

如上图,这是一棵树。【A】为根节点,【B】、【C】、【D】、【E】、【F】、【G】为【A】的子(child)节点,另外每个节点下面都可能有任意多个child,也有可能没有child,对于没有child的节点,我们称为叶(leaf)节点。从根节点到任意节点经过的边(edge)数称为该节点的深度。上图中【E】的深度是1,【P】的深度是3。一棵树的深度等于该树最深叶节点的深度。

二、应用

树的应用有很多,流行的用法之一是目录结构,如图是UNIX文件系统中一个典型的目录。

e304424322b29dad740911d513f5ed81.png

这个目录的根是/usr(* 号表示此为目录),/usr下面有三个子目录:mark、alex、bill,alex目录下面有一个junk的文件。上图的所有文件都可以通过根节点递归遍历得到,如下伪代码

private void listAll(int depth){

printName(depth); // 打印出该深度下的节点名称

if(isDirectory()){

// 如果该节点是文件夹,则继续遍历该文件夹下文件

for(File c:thisDiretory){

listAll(depth+1);

}

}

private void listAll(){

listAll(0);

}

通过这种listAll的递归,就可以打印出根节点下的所有节点。

三、二叉树

二叉树是一种特殊的树,其每个节点下最多有两个子节点。如下图显示的是普通树和二叉树

403cef4721d98aa5646b44b164df83ed.png

上图普通树的节点【6】下面有三个子节点,所以它并不属于二叉树。

二叉树有许多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值