二叉树是什么?学习java的小伙伴可能经常会听到这个词,但具体是什么又不可知,下面小编就来带你详细了解下二叉树。

二叉树概念

二叉树,指计算机中的一种树结构,这种树结构中每个结点至多只有两个子树,它们一般被称为左子树(left subtree)与右子树(right

subtree)。

二叉树特点

在二叉树层中,一棵深度为k,且具有2^k-1个结点的二叉树,就被称为满二叉树。这种树的特点是每一层的结点数都是最大结点数,并且在一棵二叉树中,除最后一层外,若其余层都是满的,或者最后一层是满的,又或者是在右边缺少连续若干结点的话,这种二叉树就叫完全二叉树。二叉树层中,具有n个结点的完全二叉树的深度为floor(log2n)+1。深度为k的完全二叉树,至少有2k-1个叶子结点,至多有2k-1个结点。

二叉树通常是递归定义的,结点有左右子树之分,并且在逻辑上有五种基本心态。

1、首先将二叉树的根节点进入队列中,判断队列不为NULL。

2、打印输出该节点存储的元素。

3、判断节点如果有子树(左子树、右子树),就将孩子进入队列中。

4、循环以上操作,直到 BT->lchild == NULL、BT->rchild=NULL。

二叉树类型

完全二叉树:设二叉树的高度为n,除n 层外,其余各层 (1~h-1)

的结点数都达到最大个数,第n层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

满二叉树:满二叉树是除了叶结点外每一个结点都有左右子叶并且叶子结点都处在最底层的二叉树。

平衡二叉树:平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,具有以下性质:它是空树,它的左右子树的高度差绝对值不超过1,并且左右两个子树都是平衡二叉树。、

二叉树实例public class BinaryTree

{

class Node

{ //声明一个节点类

private Comparable data; //保存具体内容

private Node left; //保存左子树

private Node right; //保存右字数

private Node(Comparable data)

{

this.data = data;

}

/**

* 添加方法

*/

public void addNOde(Node newNode)

{

if (newNode.data.compareTo(this.data)

{

if (this.left == null)

{

this.left = newNode; //放在左子树

}

else

{

this.left.addNOde(newNode);

}

}

else

{

if (this.right == null)

{ //放在右子树

this.right = newNode;

}

else

{

this.right.addNOde(newNode);

}

}

}

/**

* 输出信息,输出时采用中序遍历

*/

public void printNode()

{

if (this.left != null)

{

this.left.printNode(); //先输出左子树

}

System.out.print(this.data + "\t");

if (this.right != null)

{ //再输出右子数

this.right.printNode();

}

}

}

private Node root; //根元素

/**

* 添加的方法

*/

public void add(Comparable data)

{

Node newNode = new Node(data); //每传入一个新的内容,就声明一个节点

if (root == null)

{

root = newNode; //如果是第一个元素,设置成根节点

}

else

{

root.addNOde(newNode); //确定节点是放在左面还是右面

}

}

/**

* 打印方法

*/

public void print()

{

if (this.root != null)

{ //数据不为空 ,输出内容

this.root.printNode();

}

}

}

以上就是本篇文章的所有内容,二叉树的概念就是这样,小伙伴们知道了吗?更多java常见问题敬请关注奇Q工具网了解详情。

推荐阅读:

java二叉树是什么_java数据结构二叉树是什么?特点是?相关推荐

  1. java遍历树结构数据_Java数据结构——二叉树的遍历(汇总)

    二叉树的遍历分为深度优先遍历(DFS)和广度优先遍历(BFS) DFS遍历主要有: 前序遍历 中序遍历 后序遍历 一.递归实现DFS Node.java: public class Node { pr ...

  2. java 递归深度优先遍历_Java基础 - 二叉树的遍历之深度优先遍历(递归遍历)

    package com.yc.test; import java.util.ArrayList; import java.util.List; import com.yc.tree.ThreeLink ...

  3. java有内置二叉树_java数据结构——二叉树

    一.树概述 树是一种特殊的数据结构,他可以用来描述有分支的结构是由一个或者一个以上的有限集合组成,具有两个属性:一是存在一个特殊的节点,成为树根:二是其余节点分为n>=0个互斥集合,T1,T2, ...

  4. java 二叉树的高度_Java实现二叉树的建立、计算高度与递归输出操作示例

    本文实例讲述了java实现二叉树的建立.计算高度与递归输出操作.分享给大家供大家参考,具体如下: 1. 建立 递归输出 计算高度 前中后三种非递归输出 public class Tree_Link { ...

  5. java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树

    Java二叉树排序算法排序二叉树的描述也是一个递归的描述, 所以排序二叉树的构造自然也用递归的: 排序二叉树的3个特征: 1:当前node的所有左孩子的值都小于当前node的值: 2:当前node的所 ...

  6. java二叉树的深度_Java实现二叉树的深度计算

    尝试不同方法求二叉树的深度: 1.depth1,递归计算二叉树的深度,根结点的深度=max(左子树的深度,右子树的深度) + 1. 2.depth2,访问左结点,如有右结点则压栈1,同时把右结点的深度 ...

  7. java二叉树怎么初始化_java实现二叉树常见操作

    packagecom.xk.test.struct.newp;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util. ...

  8. java vector内存结构_Java 数据结构

    Java工具包提供了强大的数据结构.在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictio ...

  9. java 二维链表_Java数据结构与算法----数组与链表

    数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...

最新文章

  1. JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包
  2. python ide_Python id()
  3. AJAX,JSON 夜鹰
  4. ASP 中健壮的页结构的异常处理
  5. 原来我也可以写Android小游戏
  6. IPQ4019 QSDK 下添加EC20链接网络,非内核添加GobiNet 驱动,ipk包方法
  7. 对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例
  8. BT5的 U盘启动 制作
  9. ios根号怎么打_ios计算器开根号 苹果手机计算器怎么开根号 详情介绍
  10. linux link 硬链接,Linux系统中的硬链接(hard link)与软链接(symbolic link)
  11. iTop-4412 裸机教程(一)- 从启动方式开始
  12. HDU 4622 Reincarnation 后缀自动机
  13. MOOC人工智能原理学习笔记1
  14. Hash一致性算法(分片机制)
  15. 提取QQ游戏图标并显示
  16. VSCode常用插件和快捷键总结
  17. Teigha的BlockTableRecord获取方法
  18. 平衡运输问题及其表上作业法---指派问题及其匈牙利解法
  19. python的allure使用
  20. Looksery Cup 2015 F - Yura and Developers 单调栈+启发式合并

热门文章

  1. mysql和mysqlinnodb_mysql数据库存储引擎和innoDB
  2. 显示器与服务器连接线叫什么,连接显示器和主机的线叫什么
  3. 计算机真题11Excel,计算机网考真题EXCELPPT操作题答案(11页)-原创力文档
  4. Java中判断字符串是否为数字
  5. Linux下修改系统时间并写入BIOS
  6. Java中截取字符串中小数点前面的字符
  7. 使用esp8266制作wifi干扰器
  8. 多模块Struts应用程序的几个问题(及部分解决方法)
  9. BYOD提升企业生产力的5种方式
  10. MySQL服务器意外关机-无法启动多实例