首页 > 编程知识 正文

二叉树的层次遍历代码,二叉树的遍历算法图解

时间:2023-05-03 09:12:24 阅读:54065 作者:3990

主题1364 :二叉树扫描(flist )。

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

【主题说明】

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

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

【输入】

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

【输出】

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

【输入样品】

DBEAC

ABCDE

【输出样品】

阿布德克

问题分析:如果知道了层次遍历的第一个字符——树根、树根,就从其中寻找这个字符,从它左边即左边的子树中顺序遍历,从右边即右边的子树中顺序遍历,然后从层次遍历开始分别到左右子树中顺序遍历,都是不同的字符

c代码# includeiostreamusingnamespacestd; voidfunc(stringa,string b ) if (! a.size ()//为空返回; cout b[0]; //层次遍历的第一个字符是根intpos=a.find(b[0] ); stringa1=a.substr(0,pos ),b1; //a1是左子木的中序扫描,b1用于确定左子木的根for (inti=0; i b.size (; I () if ) a1.find ) b[I]!=string :3360 NPOs (B1.push _ back ) B[I]; (func ) A1,b1 ); //左子树a1=a .求substr (pos1)//同上b1.clear (); for(intI=0; i b.size (; I () if ) a1.find ) b[I]!=string :3360 NPOs (B1.push _ back ) B[I]; (func ) A1,b1 ); //求右边的子树(}int main ) ) IOs:3360sync_with_stdio ) false ); 字符串a,b; cin a b; func(a,b ); 返回0; }

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