4.3总结
1.tree(根据先序和中序遍历输出后序遍历)
代码实现:先序遍历,根的下个一定左节点,根往下推左子树大小个一定是右节点,由此dp。
2.mix(混合背包,01背包+完全背包)
需要考虑01背包和完全背包,一种思路是用一个大数表示“可以取无数次”的物品
另一个思路,分别讨论。
我的前期思路:分别讨论,考虑dp时正推和倒推没有处理好。
3.tree_b(根据补充空节点的先序遍历,输出中序后序)
前期思路:输入->建树->输出,其中建树原则是根·左子树·右子树的顺序,但是递归调用的问题,第3个点超时。
因此借鉴了一下基本做法:1次遍历
例:ABD..EF..G..C..
1次遍历,若下一个不是空,就成为这个的左儿子;
若下一个是空,再下一个不是空,就成为这个的右儿子。
跳过空节点,建树完成即可输出。