当前位置:网站首页>二叉树 | 代码随想录学习笔记
二叉树 | 代码随想录学习笔记
2022-08-10 22:23:00 【Begonia_cat】
跟随carl代码随想录刷题
语言:python
本文为笔者学习二叉树的笔记,主要内容来自于代码随想录。
二叉树
二叉树的定义
二叉树的定义与链表差不多,只不过二叉树的节点里多了两个指针
:指向左右孩子。
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
二叉树的形式、平衡二叉树、二叉搜索树
- 二叉树主要有两种
形式
【不包含数值】:- 满二叉树
- 一棵二叉树只有
度为0
的节点和度为2
的节点,并且度为0
的节点在同一层上。 - 深度为
k
时,有2^k - 1
个节点。
- 一棵二叉树只有
- 完全二叉树
- 除了最底层节点可能没填满外,其余每层节点数都达到了最大值。并且最下面一层的节点都集中在该层
最左边的若干位置
。若最底层为n层
,则该层包含1~2^(h-1)
个节点。 堆
就是一个完全二叉树
- 除了最底层节点可能没填满外,其余每层节点数都达到了最大值。并且最下面一层的节点都集中在该层
- 满二叉树
- 二叉搜索树
二叉搜索树
是有序树
- 如果左子树不为空,则左子树上所有节点的值均
小于
它的根节点的值。 - 如果右子树不为空,则右子树上所有节点的值均
大于
它的根节点的值。
- 平衡二叉树(又称AVL树)
- 是
空树
或左右两个子树的高度差的绝对值不超过1
,并且左右两个子树
都是一棵平衡二叉树
红黑树是一种平衡二叉树 - 一定要知道自己所用语言的
常用的容器底层
是如何实现的
- 是
二叉树的存储方式
- 两种方式:
链式存储
- 用指针
- 元素散落在内存中的各个地址
顺序存储
- 用数组
- 元素在内存中是连续分布的
如果父节点的数组下标是
i
,那么它的左孩子就是i*2+1
,右孩子就是i*2+2
链式表示方式便于理解,一般都用链式存储二叉树(所以喔,
数组依然可以表示二叉树
)。
二叉树的遍历方式
- 主要有两种遍历方式:
深度优先遍历
- 先往深走,遇到叶子节点再往回走
- ️借助
栈
实现【栈是递归的一种实现结构】 - 按照
中间节点的遍历顺序
,可细分为三种遍历方式:- 前序遍历(递归法,迭代法)
中左右
- 中序遍历(递归法,迭代法)
左中右
- 后序遍历(递归法,迭代法)
左右中
前序、中序、后序递归遍历
代码
前序、中序、后序迭代遍历
代码
- 前序遍历(递归法,迭代法)
广度优先遍历
一层一层地去遍历
️借助
队列
实现层次遍历(迭代法)
边栏推荐
猜你喜欢
自学软件测试不知道该如何学起,【软件测试技能图谱|自学测试路线图】
Leave a message with a prize | OpenBMB x Tsinghua University NLP: The update of the large model open class is complete!
谁是边缘计算服务的采购者?是这六个关键角色
艺术与科技的狂欢,阿那亚2022砂之盒沉浸艺术季
Introduction to the use of counter instructions in Rockwell AB PLC RSLogix5000
String类的常用方法
leetcode:357. 统计各位数字都不同的数字个数
虚拟地址空间
计算需要的MIPI lane数目
How many threads does LabVIEW allocate?
随机推荐
68: Chapter 6: Develop article services: 1: Content sorting; article table introduction; creating [article] article services;
留言有奖|OpenBMB x 清华大学NLP:大模型公开课更新完结!
基于交流潮流的电力系统多元件N-k故障模型研究(Matlab代码实现)【电力系统故障】
音乐播放器(未完成版本)
file IO-buffer
12 Recurrent Neural Network RNN2 of Deep Learning
Distribution Network Expansion Planning: Consider Decisions Using Probabilistic Energy Production and Consumption Profiles (Matlab Code Implementation)
解码2022中国网安强星丨正向建、反向查,华为构建数字化时代的网络安全防线
JS中使用正则表达式g模式和非g模式的区别
Shell 编程--Sed
What is Jmeter? What are the principle steps used by Jmeter?
RK3399 platform development series explanation (kernel-driven peripherals) 6.35, IAM20680 gyroscope introduction
An article to teach you a quick start and basic explanation of Pytest, be sure to read
How to be a Righteous Hacker?What should you study?
实例052:按位或
今日睡眠质量记录75分
MySQL学习笔记(1)——基础操作
美味的石井饭
3598. Binary tree traversal (Huazhong University of Science and Technology exam questions)
商家招募电商主播要考虑哪些内容