在进入今天的二叉树的笔记之前,先简单回顾一下最近算法的学习内容。用了7周的时间,将基本的数据结构都过了一遍,并针对每个数据结构进行了练习。整体来说,对自己的进度还是非常满意的。另外这一遍刷题也明显手感要好一些了。努力不会白费!
距离当初设立的flag ,时间正好过半。刷题46道。整体进度还行。
Flag:从4.11 --6.30 刷100题
本文总结二叉树的几种常见题型
二叉树
结构描述:
Class Node {
V value;
Node left;
Node right;
}
二叉树的先序、中序、后序遍历
先序:任何子树的处理顺序都是,先头节点、再左子树、然后右子树
中序:任何子树的处理顺序都是,先左子树、再头节点、然后右子树
后序:任何子树的处理顺序都是,先左子树、再右子树、然后头节点
常见案例
1 递归方式实现二叉树的先序、中序、后序遍历
1)理解递归序 (同一个位置都会经过三次,具体如下图的箭头) 2)先序、中序、后序都可以在递归序的基础上加工出来 3)第一次到达一个节点就打印就是先序、第二次打印即中序、第三次即后序
2 非递归方式实现二叉树的先序、中序、后序遍历
1)任何递归函数都可以改成非递归 2)自己设计压栈的来实现
3 实现二叉树的按层遍历
1)其实就是宽度优先遍历,用队列
2)可以通过设置flag变量的方式,来发现某一层的结束(看题目)
4 二叉树的序列化和反序列化
1)可以用先序或者中序或者后序或者按层遍历,来实现二叉树的序列化
2)用了什么方式序列化,就用什么样的方式反序列化
3)中序遍历无法实现序列化和反序列化
本周打卡进度
第六周进度: 应刷 14 道,实刷 7 道。 用时将近6小时。
其中部分时间用在看视频,对应部分的练习题还没做。
截止到本周把基本的数据类型都已经学完啦!!!下周开始进入贪心和动态规划的学习。新篇章
[ 将单向链表按某值划分成左边小、中间相等、右边大的形式 ] 打卡 2022-05-17
[ 链表改序问题 ]
[ 深度复制带有rand指针的链表 ]
[ 两个无环的单链表相交的第一个节点 ] 打卡 2022-05-21
[ 有环单链表的第一个相交节点 ] 打卡 2022-05-21
[ 判断链表是否有环 ] 打卡 2022-05-21
[ 二叉树某一节点X祖先节点的交集]
[ 递归和非递归方式实现二叉树的前序遍历 ] 打卡 2022-05-21
[ 递归和非递归方式实现二叉树的中序遍历 ] 打卡 2022-05-21
[ 递归和非递归方式实现二叉树的后序遍历 ] 打卡 2022-05-21
|