笔记:二叉树

学习了二叉树,今天来整理一下笔记吧!

一:树的理解

树的度是不限制的,一个双亲结点可以有很多子节点,但是子节点是不能交叉的,也就是不能有环。

树的的最大层次叫做这棵树的深度或者高度;

树的代码表示:

用代码如何连接这些数据,让他和树有一样的访问顺序呢

可以用左孩子右兄弟的算法:

typedef int DataType;
struct Node{
    struct Node* child;
    struct Node* brother;
    DataType x;
};

每一个结点含有有两个指向:指向孩子和兄弟结点

windos的文件管理使用的结构就是树

二、二叉树的个人理解

二叉树也是树,是每一个结点的孩子数为一个,两个,没有孩子。

二叉树的左右孩子是有区分的,不能颠倒,有序树

满二叉树:

除了最后一层的结点,其他每一层的结点都是有两个孩子,它的结点总数是2^k-1;

完全二叉树:

倒数第二层的结点,存在有的结点不是有两个孩子。最后一层的结点数从左到右必须连续;

二叉树的一些性质:

根节点为1:第i层的节点数最大为2^(i-1)

深度为k的二叉树的总结点数为:2^k-1;

度为0的结点数比度为2的节点数多一个:n0 = n2+1;

具有n各节点的二叉树,它的深度为:k = log2(n+1)

若二叉树上下,左右的顺序标号,则序号为i的结点,它的双亲是(i-1)/2

它的左孩子为2*i+1,右孩子为2*i+2,但是总数不能超过总结点数n;

三、二叉树的存储结构

逻辑结构方便我们记忆的就是为树的样子;

顺序存储:

二、链式存储:

每一个结点包含左孩子和右孩子和存储的数据x:

typedef int TypeData;
struct BinaryTreeNode{
    struct TreeNode* left;
    struct TreeNode* right;
    TypeData x;
}; 

完全二叉树的顺序结构的实现:

完全二叉树适合用顺序存储来实现;

将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。上图就是大堆; 堆的性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Though even

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值