PTA1127:树(已知中后序,建树,求变种层序)
PTA1127:树(已知中后序,建树,求变种层序)
题目及测试样例
- 题目
- 测试样例
解题思路
首先定义以下全局变量:
vector<int> in; //存放输入的中序序列
vector<int> post; //存放输入的后序序列
int N; //树的节点个数
因为必定要建树,故定义树中的节点结构体:
struct node
{
int v; //节点的值
int level=0; //当前节点位于树的第几层,初始都默认为根节点,这里不初始化其实也无影响
node *left; //左儿子节点指针
node *right;
};
为了提高代码可读性,将新建节点封装为一个函数,返回此节点指针:
node* New_Node(int a)
{
node *t=new node();
t->v=a;
return t;
}
根据中序和后序序列,建立唯一一个二叉树的函数:
node* Build_Tree(node *r,int postr,int inl,int inr)
{
if(inl>inr) return NULL;//当inl>inr,意味着访问到了一个空节点,故返回NULL
r=New_Node