博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sicily 1156. Binary tree 解题报告
阅读量:6593 次
发布时间:2019-06-24

本文共 1575 字,大约阅读时间需要 5 分钟。

题目地址:

 

思路:

  简单的一道二叉树相关的题目,题目会给出一颗树现在的形态,然后用前序遍历这棵树的节点输出数据即可。

  每个节点会输入该节点的identifier,有点类似于key,然后输入该节点储存的数据(char类型)和该节点左右子节点的identifier。

  这里直接用开了几个数组存储数据,对于一个节点identifier,将其数据存进data[identifier]里,左右子树分别存进left[identifier],right[identifier]中。输出的时候需要找到树的根root,所以可以开一个bool数组来找根,初始化全为false,读进的node都有可能是根所以都置为true,然后再将确定是左右子树的node置为false,最后数组只剩一个true的下标就是根的位置。

  输出用递归即可。

 

 

代码:

1 #include
2 #include
3 using namespace std; 4 5 6 void recursive_preorder_print(char *data,int *left,int *right,int sub_root); 7 8 int main(){ 9 int num_of_nodes;10 while(cin>>num_of_nodes&&num_of_nodes!=0){11 int left[1001]={
0},right[1001]={
0},root;12 char data[1001];13 bool is_root[1001];14 memset(is_root,false,sizeof(is_root));15 //the data,leftchild and rightchild will be stored in index identifier16 for(int i=0;i
>identifier;19 is_root[identifier]=true;//All nodes was assumed to be is_root first.20 cin>>data[identifier]>>left[identifier]>>right[identifier];21 }22 //children nodes are not is_root.23 for(int i=1;i<=1000;i++){24 is_root[left[i]]=false;25 is_root[right[i]]=false;26 }27 //find the is_root28 for(int i=1;i<=1000;i++){29 if(is_root[i]==true){30 root=i;31 break;32 }33 }34 recursive_preorder_print(data,left,right,root);35 cout<

 

转载于:https://www.cnblogs.com/jolin123/p/3419472.html

你可能感兴趣的文章
OK335xS EMMC Partition hacking
查看>>
三角形面积 蓝桥杯
查看>>
form的一个问题
查看>>
数据库操作
查看>>
samba介绍和安装
查看>>
利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
查看>>
函数的原型对象和原型链?
查看>>
js中的面向对象
查看>>
050:navie时间和aware时间详解
查看>>
如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
查看>>
【python】-- 函数、无参/有参参数、全局变量/局部变量
查看>>
KMP算法(AC自动机前奏)(转)
查看>>
基于WinSvr2016(TP)构建的“超融合技术架构”进阶篇
查看>>
2013喜获MVP殊荣,这个国庆不一样
查看>>
CocoStudio 1.4.0.1数据编辑器使用
查看>>
关于使用Android NDK编译ffmpeg
查看>>
跟我一起考PMP--项目人力资源管理
查看>>
【虚拟化实战】存储设计之七Block Size
查看>>
烂泥:记一次诡异的网络中断
查看>>
在 SELECT 查询中使用集运算符
查看>>