首页 > 编程知识 正文

如何将树转换为二叉树,数据结构森林转二叉树

时间:2023-05-04 17:21:40 阅读:54064 作者:1934

1364 (二叉树扫描(flist ) ) ) ) ) )。

时间限制: 1000 ms内存限制: 65536 KB

【主题说明】

树和二叉树基本上有先序、中序、后序、逐层扫描等扫描顺序,给定中序和其他扫描顺序可以确定一个二叉树的结构。

假设一棵树的一个节点是用一个字符描述的,现在给出按中序和逐层扫描的字符串,求出该树开头的扫描字符串。

【输入】

两行,每行是由字母构成的字符串,一行中的每个字符是唯一的。 分别表示二叉树的中顺扫描和逐层扫描的顺序。

【输出】

一行表示二叉树的优先级序列。

【输入样品】

DBEAC

ABCDE

【输出样品】

阿布德克

想法:层次遍历的结果都是途径。 当进行层次遍历时,如果你遍历左边的子树,那么当左边的子树第一次等于层次遍历时,它是根。 然后递归输出即可。

# include cstdio # include cstring # includeiostreamusingnamespacestd; string s1、s2; voidf(intL1、int r1、int l2、int r2 )/L1、r1中依次扫描、l2、r2电平扫描({int i,j; for(I=L2; i=r2; I ()//在分层扫描中优先输出根节点的位置int t=0; for(j=L1; j=r1; j () if ) S2[I]==S1[j] ) /根节点cout s1[j]; t=1; 布雷克; }if(t ) break; (if ) jL1 ) f ) L1,j-1,0,r2 ); //遍历左子树if(JR1 ) f ) j1、R1、0、r2; //遍历右边的子树}int main () IOs :3360 sync _ with _ stdio (false ); cin s1 s2; f(0,s1.size )-1,0,s2.size )-1 ); 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。