简单易懂带你了解二叉树

这篇博客介绍了二叉树这一数据结构,包括其相对于数组和链表的优势,详细讲解了二叉搜索树的特性和操作效率,强调了保持平衡对提高效率的重要性,并探讨了二叉树的遍历和实现细节。
摘要由CSDN通过智能技术生成

前言

上一篇博客为大家介绍了数组与链表这两种数据结构,虽然它们在某些方面有着自己的一些优点,但是也存在着一些自身的缺陷,本篇博客为将为大家介绍一下数据结构---二叉树,它在保留数组和链表的优点的同时也改善了它们的缺点(当然它也有着自己的缺点,同时它的实现也比较复杂).

1. 数组和链表的特点

数组的优点:

  • 简单易用.
  • 无序数组的插入速度很快,效率为O(1)
  • 有序数组的查找速度较快(较无序数组),效率为O(logN)

数组的缺点:

  • 数组的查找、删除很慢
  • 数组一旦确定长度,无法改变

链表的优点:

  • 可以无限扩容(只要内存够大)
  • 在链表头的新增、删除很快,效率为O(1)

链表的缺点:

  • 查找很慢
  • 在非链表头的位置新增、删除很慢,效率为O(N)

2.树和二叉树

树是一种数据结构,因为它数据的保存形式很像一个树,所以得名为树(树状图).

而二叉树是一种特殊的树,它的每个节点最多含有两个子树,现实世界中的二叉树:

www.wityx.com
图1

但是实际中的二叉树却是倒挂的,如图:

www.wityx.com
图2

二叉树的名词解释:

  • 根:树顶端的节点称为根。一棵树只有一个根,如果要把一个节点和边的集合称为树,那么从根到其他任何一个节点都必须有且只有一条路径。A是根节点。
  • 父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;B是D的父节点。
  • 子节点:一个节点含有的子树的根节点称为该节点的子节点;D是B的子节点。
  • 兄弟节点:具有相同父节点的节点互称为兄弟节点;比如上图的D和E就互称为兄弟节点。
  • 叶节点:没有子节点的节点称为叶节点,也叫叶子节点,比如上图的E、H、L、J、G都是叶子节点。
  • 子树:每个节点都可以作为子树的根,它和它所有的子节点、子节点的子节点等都包含在子树中。
  • 节点的层次:从根开始定义,根为第一层,根的子节点为第二层,以此类推。
  • 深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0;
  • 高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0;

深度与高度的区别在于: 深度为根到节点的距离,而高度是节点到叶的距离(记住根深叶高)。

3.二叉搜索树以及它是通过什么方式改善的数组、链表的问题

二叉搜索树是一种特殊的二叉树,除了它的子节点不能超过两个以外,它还拥有如下特点:

  • 一个节点的左子节点的关键字的值永远小于该节点的值
  • 一个节点的右子节点的关键字的值永远大于等于该节点的值

www.wityx.com
图3 - 二叉搜索树关键字的排序方式

从图3还可以看出,二叉搜索树的最小值就是它的最左节点的关键字的值,而最大值则是它的最右节点的值.

二叉搜索树的查找、新增、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值