数据结构之二叉树

参考:《漫画算法:小灰的算法之旅》

二叉树是树的一种特殊形式。这种树的每个节点最多有2个孩子节点。二叉树节点的两个孩子节点,一个被称为左孩子(left child),一个被称为右孩子(right child)。这两个孩子节点的顺序是固定的。

二叉树的存储

数据结构分为物理结构和逻辑结构。二叉树属于逻辑结构,它可以通过多种物理结构来表达。
1、链式存储结构
2、数组

链式存储:

链式存储是二叉树最直观的存储方式。
我们知道链表是一对一的存储方式,每个链表节点拥有data变量和一个指向下一个节点的next指针。二叉树复杂一些,一个节点最多可以指向左右两个孩子节点,所以二叉树的每个节点包含3部分。树的每一个节点包括3部分:
存储数据的data变量。
指向左孩子的left指针
指向右孩子的right指针
 

数组存储:
使用数组存储时,会按照层级顺序把二叉树的节点放到数组中对应的位置上。如果某一个节点的左孩子或者右孩子空缺,则数组的相应位置也空缺出来了。假如一个父节点的下标是parent,那么它的左孩子的节点下标是2*parent+1;右孩子的节点下标是2*parent+2。反过来,假设一个左孩子节点的下标是leftChild,那么它的父节点下标就是(leftChild-1)/2。对于一个稀疏的二叉树来说,用数组表示法是非常浪费空间的。

二叉树的应用

二叉树包含许多特殊的形式,每一种形式都有自己的作用,但是其最主要的应用在于进行查找操作和维持相对顺序这两个方面。

1、查找

二叉树形结构使它很适合扮演索引的角色。比如一种特殊的二叉树:二叉查找树(binary search tree)。
二叉树在二叉树的基础上增加了几个条件:

  • 如果左子树不为空,那左子树上所有节点的值均小于根节点的值。
  • 如果右子树不为空,那右子树上所有节点的值均大于根节点的值。
  • 左、右子树也都是二叉查找树。

比如:

比如查找值为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值