扩展二叉树

    科技2022-08-22  117

    测试地址:

    【题目描述】

    由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用·补齐,如图所示。我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。

    现给出扩展二叉树的先序序列,要求输出其中序和后序序列。

    【输入】

    扩展二叉树的先序序列。

    【输出】

    输出其中序和后序序列。

    【输入样例】

    ABD..EF..G..C..

    【输出样例】

    DBFEGAC DFGEBCA

    【思路】 

    输入先序序列,存储在数组中,递归 k*2 为左子树,k*2+1 为右子树,遇到 ' . ' 停止,之后输出中序和后序遍历。

    【AC代码】

    #include<cstdio> char d[1010]; void pre_order(int k){ scanf("%c", &d[k]); if(d[k] == '.') return; pre_order(k*2); pre_order(k*2+1); } void in_order(int k){ if(d[k] == '.') return; in_order(k*2); printf("%c", d[k]); in_order(k*2+1); } void hide_order(int k){ if(d[k] == '.') return; hide_order(k*2); hide_order(k*2+1); printf("%c", d[k]); } int main(){ pre_order(1); in_order(1); printf("\n"); hide_order(1); return 0; }

     

    Processed: 0.016, SQL: 9