题目 您所在的位置:网站首页 前序格式 题目

题目

2024-07-06 23:52| 来源: 网络整理| 查看: 265

题目描述

输入一串二叉树,用遍历前序打出。

输入输出格式 输入格式:

第一行为二叉树的节点数n。(n \leq 26n≤26 )

后面n行,每一个字母为节点,后两个字母分别为其左右儿子。

空节点用*表示

输出格式:

前序排列的二叉树

输入输出样例

输入样例#1:  复制 6 abc bdi cj* d** i** j** 输出样例#1:  复制 abdicj

解题思路:一开始准备用结构体表示树,内含双向指针,然后遇到了bug,首先是结构体运用不熟,没搞懂指针指向自定义类型的定义方法,然后就有父亲,儿子双向指针的繁琐,最后又在前序输出这个类似于dfs的输出方法没转过来怎么传送指针指向的内容,卒,,参看大佬题解,才明白思路一样代码也会差好多,1,以Int型代替char型,数组的下标一下子就简洁了,然后节点较简单,可以不用指针而直接存储,最后前序输出时也贼方便;

AC.1:(包含错误代码以示衬托)

#include #include #include using namespace std; struct tree { int le,ri,fa; }T[30]; int n,root; string c; void visit(int k) { char ch = k + 96; printf("%c",ch); if(T[k].le!=0) visit(T[k].le); if(T[k].ri!=0) visit(T[k].ri); } int main() { cin>>n; for(int i=1;i>c; if(c[1]!='*') { T[c[0]-96].le = c[1]-96; T[c[1]-96].fa = c[0]-96; } if(c[2]!='*') { T[c[0]-96].ri = c[2]-96; T[c[2]-96].fa = c[0]-96; } } for(int i=1;i>t; // char s[4],begain; // for(int i=1;i>s; // if() trees[s[0]].x=s[0]; if(trees[s[1]].fa!=NULL)// trees[s[1]].fa=&trees[s[0]]; if(trees[s[2]].fa!=NULL) trees[s[2]].fa=&trees[s[0]]; if(s[1]!='*') trees[s[0]].lson=&trees[s[1]]; if(s[2]!='*') trees[s[0]].rson=&trees[s[2]]; } for(int i=97;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有