数据结构学习笔记 - 二叉树

二叉树

简介

树, 非线性表结构
树有三个概念:
高度从下向上数, 起点是0
深度从上向下数, 起点是0
层数从上向下数, 起点是1

二叉树

每个节点最多两个叉
有两种特殊二叉树:
满二叉树, 除了叶子节点, 每个节点都有左右两个子节点
完全二叉树, 叶子节点都在最底下两层, 最后一层叶子节点都靠左排列, 且除了最后一层, 其它层节点个数都达到最大
满二叉树是完全二叉树的一种特殊情况

存储二叉树

  1. 基于指针的二叉链式存储法
    每个节点三个字段, 一个存数据, 另外两个存左右子节点的指针, 这种方式比较常用, 大部分二叉树代码都是通过这种结构来实现的
  2. 基于数组的顺序存储法
    把根节点存储在i=1的位置, 左子节点存在2i的位置, 右子节点存储在2i+1的位置, 以此类推
    此种存储方式, 是完全二叉树的话, 只浪费一个下标0的存储位置, 非完全二叉树的话, 会浪费更多的数组存储空间

所以一个树是完全二叉树的话, 用数组存储是最节省内存的一种方式, 也是为什么完全二叉树被单拎出来说明的原因.
堆其实就是一种完全二叉树, 最常用的存储方式就是数组

二叉树的遍历

如何打印所有节点, 经典方法有三种:
前序遍历, 对于树中的任意节点来说, 先打印这个节点, 再打印左子树, 最后打印右子树 (todo)
中序遍历, 对于树中的任意节点来说, 先打印左子树,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值