给定二叉树前序遍历的数组pre,和中序遍历数组mid求后序遍历的伪代码
时间: 2023-07-13 14:27:55 浏览: 121
下面是通过前序遍历和中序遍历数组求后序遍历的伪代码:
```
function postOrder(pre, mid, start, end, index)
if start > end
return
root = pre[index]
i = start
while mid[i] != root
i = i + 1
postOrder(pre, mid, start, i-1, index+1)
postOrder(pre, mid, i+1, end, index+i-start+1)
print root
```
其中,pre表示前序遍历数组,mid表示中序遍历数组,start和end表示当前子树在中序遍历数组中的起始下标和终止下标,index表示当前子树在前序遍历数组中的起始下标。函数的作用是输出当前子树的后序遍历。具体实现过程如下:
1. 如果当前子树为空,直接返回。
2. 从前序遍历数组中找到当前子树的根节点root。
3. 在中序遍历数组中找到root的位置i,即左子树的终止位置和右子树的起始位置。
4. 递归输出左子树的后序遍历,即调用postOrder(pre, mid, start, i-1, index+1)。
5. 递归输出右子树的后序遍历,即调用postOrder(pre, mid, i+1, end, index+i-start+1)。
6. 输出根节点root。
阅读全文