提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
剑指offer笔记- 前言
- 总结
第 6 天
搜索与回溯算法(简单)
剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - III. 从上到下打印二叉树 III
广度优先搜索 二叉树
广度优先遍历 队列实现 用数组存结果
第 7 天
搜索与回溯算法(简单)
剑指 Offer 26. 树的子结构
深度优先搜索
深度遍历树的每一个节点
再用一个递归函数比较当前节点以root的子树和子结构是否一致
比较子结构的递归函数
当递归到子结构的树为null时返回true
否则比较当前两个树的根值 继续递归比较
剑指 Offer 27. 二叉树的镜像
递归 先交换左右节点值 再递归左右子树 返回root
剑指 Offer 28. 对称的二叉树
递归 在第二个函数递归比较根节点的左右子树
第 14 天
搜索与回溯算法(中等)
剑指 Offer 12. 矩阵中的路径
数组 回溯 矩阵
剑指 Offer 13. 机器人的运动范围
深度优先搜索&广度优先搜索
第 15 天
搜索与回溯算法(中等)
剑指 Offer 34. 二叉树中和为某一值的路径
深度优先搜索 回溯
深度优先遍历 若当前节点为叶节点且targetSum等于当前节点 记录当前路径
在递归中先将节点值加入路径 然后递归左右子树 再移出当前节点值
剑指 Offer 36. 二叉搜索树与双向链表
栈 树 深度优先搜索
//中序遍历依次递增 存头节点 当前节点 最后处理首尾节点指向即可
剑指 Offer 54. 二叉搜索树的第k大节点
深度优先搜索 二叉搜索树
第 18 天
搜索与回溯算法(中等)
剑指 Offer 55 - I. 二叉树的深度
递归实现
剑指 Offer 55 - II. 平衡二叉树
深度优先搜索
//递归实现 遍历每一个节点 比较左右子树的高度差
111 二叉树的最小深度 最小深度注意判断当左右节点有一个为null时 递归返回另一个边的深度+1
104 二叉树的最大深度 正常返回左右子树的最大深度 +1
第 19 天
搜索与回溯算法(中等)
剑指 Offer 64. 求1+2+…+n
位运算
递归
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
深度优先搜索
二叉搜索树
//和二叉树的最近公共祖先差不多
递归实现
利用二叉搜索树的性质判断最近公共祖先在左右子树的哪一边 继续递归相应边的子树 最后返回当前节点
剑指 Offer 68 - II. 二叉树的最近公共祖先
深度优先搜索
//递归实现
递归终止条件 当前root为空或等于p或q
判断以root为根的左右子树是否包含 p q
根据情况返回 若左右子树都包含 则当前root为最近公共祖先 否则返回不为空的一边(有可能都为空)
第 28 天
搜索与回溯算法(困难)
剑指 Offer 37. 序列化二叉树
深度优先搜索&广度优先搜索
剑指 Offer 38. 字符串的排列
字符串



