二叉树的存储方式
- 二叉树链式存储方式就用指针, 顺序存储的方式就是用数组。
- 顺序存储的元素在内存是连续分布的,而链式存储则是通过指针把分布在各个地址的节点串联一起。
- 顺序存储就是用数组来存储二叉树,用数组来存储二叉树如何遍历的呢?
- 如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。父 = floor((子 - 1) / 2)
递归什么时候需要返回值
需要返回值
目标是计算某个值:如果递归的目的是通过多个子问题的解来计算一个整体的解(例如计算斐波那契数列、树的最大深度等),递归函数通常需要返回值,以将子问题的结果逐层传递回去。
查找并返回结果:如果递归的目的是查找某个值或路径并返回(例如在树中查找某个节点是否存在),那么递归函数通常需要返回值,以便在找到结果时立即返回,并终止进一步的递归。
路径汇总:在某些情况下,你需要汇总来自子树或子问题的多个结果,并将其返回给上一层。例如,计算树中所有路径和等于某个值的路径数量。
不需要返回值
目标是修改全局状态:如果递归的目的是修改某些全局状态,或直接对某些数据结构进行操作,而不需要从子问题中获取结果,那么递归函数通常不需要返回值。例如,在遍历过程中填充某个列表、集合、或字典。
只做处理,不需要结果:如果递归的目的是执行某些操作,但这些操作的结果不需要传递回调用者,那么就不需要返回值。例如,前序遍历、中序遍历、后序遍历时,只需要访问每个节点并执行一些操作即可。
大约 47 分钟