Update 0106.从中序与后序遍历序列构造二叉树.md

优化代码高亮
This commit is contained in:
GitHubQAQ
2022-04-29 21:03:27 +08:00
committed by GitHub
parent db84840986
commit dac0b4a12e

View File

@ -103,7 +103,7 @@ TreeNode* traversal (vector<int>& inorder, vector<int>& postorder) {
中序数组相对比较好切,找到切割点(后序数组的最后一个元素)在中序数组的位置,然后切割,如下代码中我坚持左闭右开的原则: 中序数组相对比较好切,找到切割点(后序数组的最后一个元素)在中序数组的位置,然后切割,如下代码中我坚持左闭右开的原则:
```C++ ```CPP
// 找到中序遍历的切割点 // 找到中序遍历的切割点
int delimiterIndex; int delimiterIndex;
for (delimiterIndex = 0; delimiterIndex < inorder.size(); delimiterIndex++) { for (delimiterIndex = 0; delimiterIndex < inorder.size(); delimiterIndex++) {
@ -130,7 +130,7 @@ vector<int> rightInorder(inorder.begin() + delimiterIndex + 1, inorder.end() );
代码如下: 代码如下:
``` ```CPP
// postorder 舍弃末尾元素,因为这个元素就是中间节点,已经用过了 // postorder 舍弃末尾元素,因为这个元素就是中间节点,已经用过了
postorder.resize(postorder.size() - 1); postorder.resize(postorder.size() - 1);
@ -144,7 +144,7 @@ vector<int> rightPostorder(postorder.begin() + leftInorder.size(), postorder.end
接下来可以递归了,代码如下: 接下来可以递归了,代码如下:
``` ```CPP
root->left = traversal(leftInorder, leftPostorder); root->left = traversal(leftInorder, leftPostorder);
root->right = traversal(rightInorder, rightPostorder); root->right = traversal(rightInorder, rightPostorder);
``` ```