7-2 根据后序和中序遍历输出先序遍历
时间: 2023-11-17 15:07:55 浏览: 232
根据后序和中序遍历输出先序遍历的方法如下:
1. 后序遍历的最后一个节点一定是根节点,将其输出。
2. 在中序遍历中找到根节点的位置,将其分为左子树和右子树。
3. 对于后序遍历中根节点左边的节点,它们一定在左子树中,对左子树递归执行步骤1和步骤2。
4. 对于后序遍历中根节点右边的节点,它们一定在右子树中,对右子树递归执行步骤1和步骤2。
5. 重复以上步骤直到遍历完整棵树。
代码实现如下:
```
function postInToPre($postorder, $inorder) {
if (empty($postorder) || empty($inorder)) {
return '';
}
$root = array_pop($postorder);
$index = array_search($root, $inorder);
$left = array_slice($inorder, 0, $index);
$right = array_slice($inorder, $index + 1);
$left_pre = postInToPre(array_slice($postorder, 0, count($left)), $left);
$right_pre = postInToPre(array_slice($postorder, count($left), count($right)), $right);
return $root . ' ' . $left_pre . $right_pre;
}
```
阅读全文