先对输入的字符串进行处理,存放到模拟二叉树的数组当中(-1表示叶子结点)。
对于数组中的节点i,它的左右孩子分别是2i和2i+1(完全二叉树的性质)
dfs搜索左右子树,pre记录搜索路径中的最大值。若index超出数组长度或遇到-1则结束搜索。若当前节点>=pre,则是新的最大值,res+1。继续dfs(左子树)和dfs(右子树)
#include <bits/stdc++.h>
using namespace std;
vector<int> nums;
void split(string &s)
{
...