二叉树理论基础

本文详细介绍了二叉树的不同类型,包括满二叉树和完全二叉树的概念及其特点。此外,还讲解了二叉搜索树和平衡二叉树的性质。探讨了二叉树的链式存储和顺序存储结构,以及如何通过深度优先和广度优先遍历二叉树。最后,给出了Python实现二叉树节点的代码示例。
摘要由CSDN通过智能技术生成

二叉树的种类

不考虑数值的二叉树

1 满二叉树

如果一棵二叉树又有度为0和2的节点,且度为0的节点都在同一层上,这棵树就称为满二叉树。
深度为k,节点数为2^k-1

其实就是最后一层的孩子一个也不少,父节点都是两孩子,儿女双全

2 完全二叉树

除了最底层节点没有填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置

从满二叉树可以剪到完全二叉树,最后一层的孩子可以不全,但必须都往左靠

考虑数值的二叉树

1 二叉搜索树

二叉搜索树是一个有序的树
左子树不为空,左子树上所有节点值小于根节点的值
右子树不为空,右子树上所有节点值大于根节点的值
左右子树分别为二叉排序树

所有的子树满足,左孩子<根节点<右孩子

2 平衡二叉树(O(log(n)))

平衡二叉树,左右两个子树的高度差不超过1,并且左右两个子树都是一棵平衡二叉树

二叉树的存储结构

链式存储:带有两个指针,链表存储
顺序存储:数组存储,父节点的数组下标是i, 左右两个孩子在数组中的位置2i+1,2i+2

二叉树的两种遍历方式

深度优先遍历:先往深处走,遇到叶子节点就返回
前序、中序、后序(栈)
广度优先遍历:一层一层的遍历
层序遍历(队列,先进先出)

二叉树的定义

python方式的定义

class TreeNode(object):
	def __init__(self,val):
		self.value=val
		self.left=None
		self.right=None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值