已知後序與中序輸出前序(先序)

2021-10-20 07:54:46 字數 452 閱讀 2760

後序:3, 4, 2, 6, 5, 1(左右根)

中序:3, 2, 4, 1, 6, 5(左根右)

前序:1, 2, 3, 4, 5, 6(根左右)

分析:因為後序的最後乙個總是根結點,令i在中序中找到該根結點,則i把中序分為兩部分,左邊是左子樹,右邊是右子樹。因為是輸出先序(根左右),所以先列印出當前根結點,然後列印左子樹,再列印右子樹。左子樹在後序中的根結點為root – (end – i + 1),即為當前根結點-(右子樹的個數+1)。左子樹在中序中的起始點start為start,末尾end點為i – 1。右子樹的根結點為當前根結點的前乙個結點root – 1,右子樹的起始點start為i+1,末尾end點為end。
#include

using

namespace std;

int post[

]

已知前序(先序)與中序輸出後序

已知前序 先序 與中序輸出後序 前序 1,2,3,4,5,6 根左右 中序 3,2,4,1,6,5 左根右 分析 因為前序 根左右 最先出現的總是根結點,所以令root為前序中當前的根結點下標 並且同時把一棵樹分為左子樹和右子樹 start為當前需要列印的子樹在中序中的最左邊的下標,end為當前需要...

已知前序(先序)與中序輸出後序

已知前序 先序 與中序輸出後序 前序 1,2,3,4,5,6 根左右 中序 3,2,4,1,6,5 左根右 分析 因為前序 根左右 最先出現的總是根結點,所以令root為前序中當前的根結點下標 並且同時把一棵樹分為左子樹和右子樹 start為當前需要列印的子樹在中序中的最左邊的下標,end為當前需要...

已知前序(先序)與中序輸出後序

已知前序 先序 與中序輸出後序 前序 1,2,3,4,5,6 根左右 中序 3,2,4,1,6,5 左根右 分析 因為前序 根左右 最先出現的總是根結點,所以令root為前序中當前的根結點下標 並且同時把一棵樹分為左子樹和右子樹 start為當前需要列印的子樹在中序中的最左邊的下標,end為當前需要...