入门题一:

输入一颗二叉树,你的任务是按从上到下、从左到右的顺序输出各个节点的值。每个节点都按照从根节点到它的移动序列给出
(L表示左,R表示右)。在输入中,每个节点的左括号和右括号之间没有空格,相邻节点之间用一个空格隔开。每颗树的输入用一
对空括号()结束(这对空括号不代表节点)
    注意,如果从根到某个叶节点的路径上有的节点没有在输入中给出,或者给出了超出一次,应到输出 -1 。节点个数不超过256。

样例输入:
    (11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()
    (3,L) (4,R) ()
样例输出:
    5 4 8 11 13 4 7 2 1
    0

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define maxn 256char buf[maxn]; //保存读入节点
int failed;
int n=0,ans[maxn]; //节点个数和输出序列 typedef struct Tnode{int have_value;    //是有赋过值 int v;          //节点值 struct Tnode *left,*right;
}Node;
Node *root; //二叉树的根节点 Node* newnode()
{Node *tmp=(Node*)malloc(sizeof(Node));if(tmp!=NULL){tmp->have_value=0;       //显示的初始化为0,因为malloc申请内存时并不把它清零tmp->left=tmp->right=NULL; }return tmp;
}void addnode(int value,char *s)
{int length=strlen(s);Node *tmp=root;for(int i=0;i<length;i++){ //索引对应的位置 if('L'==s[i]){if(NULL==tmp->left) tmp->left=newnode();tmp=tmp->left;}else if('R'==s[i]){if(NULL==tmp->right) tmp->right=newnode();tmp=tmp->right;}      }if(tmp->have_value) failed=1;  //已经赋过值表明输入有误 tmp->v=value; tmp->have_value=1;
}int read_input()
{failed=0;root=newnode();for(;;){if(scanf("%s",buf)!=1) return 0;  //整个输入结束if(!strcmp(buf,"()")) break;int v;sscanf(&buf[1],"%d",&v);  //读入节点的值addnode(v,strchr(buf,',')+1); }return 1;
} /*  BFS,Breadth-Firsh Search  宽度优先遍历 */
int bfs()
{int front=0,rear=1;Node* q[maxn];q[0]=root;while(front<rear){Node* tmp=q[front++];if(tmp->have_value==0) return 0;ans[n++]=tmp->v;if(NULL != tmp->left)  q[rear++]=tmp->left;if(NULL != tmp->right) q[rear++]=tmp->right;}return 1;
}void remove_tree(Node* u)
{if(NULL==u) return ;remove_tree(u->left);remove_tree(u->right);free(u);
}int main()
{read_input();if(bfs() && !failed){for(int i=0;i<n;i++){printf("%d ",ans[i]);}}else{printf("0\n");}return 0;
}

入门题二:

输入一颗二叉树的先序遍历和中序遍历,输出它的后序遍历序列。
样例输入:
        DBACEGF ABCDEFG
        BCAD CBAD
样例输出:
        ACBFGED
        CDAB

#include "stdio.h"
#include "string.h"
#define maxn 20
char preorder[maxn],inorder[maxn],postOrder[maxn];      //先序、中序 和后序 //n树的节点个数,pre前序,in中序,post后序
void build(int n,char *pre,char *in,char *post)
{if(n<=0) return;int x=strchr(in,pre[0])-in;       //找到根节点在中序遍历中的位置 build(x,pre+1,in,post);           //递归构造左子树的后序遍历 build(n-x-1,pre+x+1,in+x+1,post+x);     //递归构造右子树的后序遍历 post[n-1]=pre[0];   //根节点添加到最后
}int main()
{while(scanf("%s%s",preorder,inorder)==2){int n=strlen(preorder);build(n,preorder,inorder,postOrder); postOrder[n]='\0';printf("%s\n",postOrder);     } return 0;
} 

二叉树学习——简单入门题相关推荐

  1. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. 流行学习简单入门与理解

    最近博主再看西瓜书第十三章半监督学习,文章中作者提到需要少量查询的主动学习.K-means簇的聚类,以及流行学习.对于流行学习,博主也是第一次接触,下面我们来简单学习和理解一下流行学习. 1. 半监督 ...

  3. 动态规划之背包问题的一些基础简单入门题

    前言 参考视频教程洛谷试练场 普及组 动态规划的背包问题 主要有01背包问题.完全背包问题.分组背包问题. 01背包问题一般从右往左推: 完全背包问题一般从左往右推: 分组背包一般用01的方法但需要记 ...

  4. [置顶] 状态压缩DP 简单入门题 11题

    1.每一行用一个二进制数表示, 有些二进制数是题目中不合法的状态,我们可以预处理出一行合法状态的个数,在递推的过程中复杂度就会大大降低. POJ 3254        Corn Fields     ...

  5. 一把王者荣耀的时间打卡剑指 Offer简单入门题

    第 1 天栈与队列(简单) 剑指 Offer 09. 用两个栈实现队列 难度简单 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在 ...

  6. 学习笔记之15道简单算法题

    15道简单算法题 http://www.cnblogs.com/hlxs/archive/2014/06/06/3772333.html (●-●) | 剑指Offer_编程题_牛客网 http:// ...

  7. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

  8. java基础算法题(入门题与简单题)

    题目来自lintcode,答案来自九章算术,将自己在lintcode上训练的一些简单算法题贴出来,作为知识的总结与整理.便于查看复习. 第一部分(入门级别,只做了开放的部分,大部分需要收费的VIP才有 ...

  9. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

最新文章

  1. 机器学习-数据科学库(第四天)
  2. 配置 yum 源的两种方法
  3. 空间索引不能用analyze进行分析
  4. Stream学习过程中遇到的一个问题记录
  5. 实战 | F1060路由模式典型组网配置案例(静态路由)
  6. CSS选取子标签元素:nth-child、first-child、last-child
  7. Web渗透测试之信息收集
  8. HTML常用排版标签
  9. 林期苏曼属性标签编辑_标签制作软件如何制作椭圆形药品标签
  10. 透析澳大利亚大学计算机硕士课程 .转
  11. 新手指南:顶象验证码如何接入微信小程序?
  12. -webkit-touch-callout: none;禁止ios弹出菜单,长按图片保存到手机时
  13. Unity 2D 混合树小例子
  14. 既然阻塞 I/O 会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?
  15. linux下R安装RMySQL不成功 configuration failed for package ‘RMySQL’
  16. r420服务器安装系统,r420服务器bios设置
  17. 夺命雷公狗---javascript NO:18 BOM模型
  18. 【洛谷】P1200 你的飞碟在这儿
  19. 如何控制自己的时间和欲望以不断学习
  20. 魔方优化大师3.38正式版:WiFi共享+账号改进

热门文章

  1. excel导航窗格_Excel小技巧16:在每天的某个时刻自动打开特定工作簿
  2. agv系统介绍_重载AGV小车主要结构及导航原理是什么?
  3. mysql htmlspecialchars_htmlSpecialchars和MySQL_REARY_EXECH_String是否保证PHP代码
  4. mysql运算结果放入表中_MySQL表1新增数据,计算开始、结束日期之间所有时间,插入到表2中...
  5. 液位单闭环实验计算机控制,过程控制实验指导书
  6. java 封箱_java封箱和拆箱分析
  7. CSS知识点整理(2):框模型,定位
  8. Vue $nextTick
  9. Hbase 的javaAPI基本操作用 在idea上的实现
  10. 【从入门到放弃】23种设计模式(1):设计模式综述