4.3总结


1.tree(根据先序和中序遍历输出后序遍历)

代码实现:先序遍历,根的下个一定左节点,根往下推左子树大小个一定是右节点,由此dp。

2.mix(混合背包,01背包+完全背包)

需要考虑01背包和完全背包,一种思路是用一个大数表示“可以取无数次”的物品

另一个思路,分别讨论。

我的前期思路:分别讨论,考虑dp时正推和倒推没有处理好。

3.tree_b(根据补充空节点的先序遍历,输出中序后序)

前期思路:输入->建树->输出,其中建树原则是根·左子树·右子树的顺序,但是递归调用的问题,第3个点超时。

因此借鉴了一下基本做法:1次遍历

例:ABD..EF..G..C..

1次遍历,若下一个不是空,就成为这个的左儿子;

若下一个是空,再下一个不是空,就成为这个的右儿子。

跳过空节点,建树完成即可输出。