Update 二叉树中递归带着回溯.md

进一步探讨左右子树情况
This commit is contained in:
Asterisk
2021-10-04 18:25:43 +08:00
committed by GitHub
parent 87f9a269be
commit 7b6fd76129

View File

@ -145,22 +145,22 @@ if (cur->right) {
}
```
此时就没有回溯了,这个代码就是通过不了的了
因为在递归右子树之前需要还原path所以在左子树递归后必须为了右子树而进行回溯操作。而只右子树自己不添加回溯也可以成功AC
如果想把回溯加上,就要 在上面代码的基础上,加上回溯就可以AC了。
因此,在上面代码的基础上,加上左右子树的回溯代码就可以AC了。
```CPP
if (cur->left) {
path += "->";
traversal(cur->left, path, result); // 左
path.pop_back(); // 回溯
path.pop_back();
path.pop_back(); // 回溯抛掉val
path.pop_back(); // 回溯,抛掉->
}
if (cur->right) {
path += "->";
traversal(cur->right, path, result); // 右
path.pop_back(); // 回溯
path.pop_back();
path.pop_back(); // 回溯(非必要)
path.pop_back();
}
```