二叉树基本理论

二叉树是我们经常会用到的一种数据结构,在我们日常刷题和编程中都有很大的用处,本篇讲一下我所了解的二叉树的相关知识。

满二叉树

满二叉树:
在不增加层数的前题下,无法再增加一个节点的二叉树
一个二叉树只有度为0和度为2的结点,且度为0的结点都在同一条线上,这种二叉树就叫做满二叉树。
图例:
在这里插入图片描述

完全二叉树

如果只是删除了满二叉树最底层最右的连续若干个结点,这样形成的二叉树就是完全二叉树
在这里插入图片描述
在这里插入图片描述

二叉排序树

二叉排序树:

如果左子树不为空,那么左子树上所有的节点的值都小于根节点
如果右子树不为空,那么右子树上所有的节点的值都大于根节点
左右子树都是二叉排序树

在这里插入图片描述

平衡二叉树(AVL)

它是一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两颗子树都是一颗平衡二叉树。
平衡因子: 左子树的高度 - 右子树的高度
我们将平衡因子的绝对值小于1的的有序二叉树称为平衡二叉树

在这里插入图片描述

二叉树的存储

链式存储方式

采用链式存储用java可以这么表示

public class treeNode{
    private int value;
    private treeNode leftNode;
    private treeNode rightNode;
}

在这里插入图片描述

顺序存储

顺序存储可以借助数组来实现
在这里插入图片描述
以上树为例,借助数组进行存储就是
在这里插入图片描述
据此我们还可以得到顺序存储的规律
根节点下标为 k那他的左孩子节点的下标就是2k 右孩子结点的下标为2k+1

二叉树的遍历

二叉树的遍历有两种

1.深度优先遍历

这个在我这篇博客里有
https://editor.csdn.net/md/?articleId=120377450

2.广度优先遍历

一层一层得遍历,层次遍历
在这里插入图片描述
对于这棵二叉树来说使用层次遍历就是
58 ->36->60->18->45->59->80

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值