数据结构
链表
JZ6 从尾到头打印链表

方法1.遍历
分析
简单的遍历,收集每个节点的
val,然后对结果翻转,返回
代码
方法2.递归
分析
采用递归的方式,不断进入下一个节点,当到达最后一个节点指向
null时,开始返回出口条件:当节点是
null的时候

代码
JZ25 合并两个排序的链表

方法1:递归
方法2:迭代
JZ18 删除链表的节点

方法1:迭代
JZ23 链表中环的入口结点

方法1:快慢指针

也可以有如下的解法:

树
JZ77 按之字形顺序打印二叉树
方法1.
JZ82 二叉树中和为某一值的路径(一)

方法1:DFS
方法2:递归
方法3:BFS
JZ34 二叉树中和为某一值的路径(二)

方法1:回溯-递减
方法2:回溯-累加
JZ84 二叉树中和为某一值的路径(三)

JZ68 二叉搜索树的最近公共祖先

JZ86 在二叉树中找到两个节点的最近公共祖先

思路:
1.left和right都为空,说明root的左右子树中都不包含p和q节点,返回null即可
2.left不为空,right为空,说明p和q不在右子树中(因为右子树为空了),这时,返回left,这里面有下面的两种情况:
p和q都在left即左子树上,而root节点恰好指向了p或者qp和q都在left即左子树上,而root节点未指向了p或者q,指向的是最近公共祖先节点
3.right不为空,left为空,说明p和q不在左子树中(因为左子树为空了),这时,返回right,这里面有下面的两种情况:
p和q都在right即右子树上,而root节点恰好指向了p或者qp和q都在right即右子树上,而root节点未指向了p或者q,指向的是最近公共祖先节点
4.left不为空,并且right不为空,说明p和q分布在root节点的左右子树的两侧,这时root为p和q的最近公共祖先节点,返回



Last updated