数据结构练习题――中序遍历二叉树
数据结构练习题――中序遍历二叉树
描述
给定一颗二叉树,要求输出二叉树的深度以及中序遍历二叉树得到的序列。本题假设二叉树的结点数不超过1000。
输入
输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树。每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处理。二叉树的构造按照层次顺序(即第1层1个整数,第2层2个,第3层4个,第4层有8个…,如果某个结点不存在以0代替)
输出
输出每棵二叉树的深度以及中序遍历二叉树得到的序列。
样例输入
2
1 -1
1 2 0 3 4 -1
样例输出
1 1
3 3 2 4 1
#include <iostream>
#include<bits/stdc++.h>
#include<algorithm>using namespace std;
int node[1005],n;
typedef struct tree{int data;struct tree *ltree,*rtree;
}tree;
void CreatTree(tree *&T,int x){if(node[x]==0){T = NULL;return;}T = (tree *)malloc(sizeof(tree));T->data = node[x];CreatTree(T->ltree,2*x);CreatTree(T->rtree,2*x+1);
}
void InOrderTraverse(tree *T)
{if(T){InOrderTraverse(T->ltree);printf(" %d",T->data);InOrderTraverse(T->rtree);}
}
int Hight_Tree(tree *T){int l = 0,r = 0;if(T==NULL)return 0;l = Hight_Tree(T->ltree) + 1;r = Hight_Tree(T->rtree) + 1;return l>r?l:r;
}
int main(){int t;
tree *T;
T = NULL;
scanf("%d",&t);
while(t--)
{ int x;n=1;while(scanf("%d",&x)&&x!=-1){node[n] = x;n++;}CreatTree(T,1);int len = Hight_Tree(T);printf("%d",len);InOrderTraverse(T);printf("\n");
}
return 0;
}
数据结构练习题――中序遍历二叉树相关推荐
- 数据结构练习题---先序遍历二叉树
数据结构练习题---先序遍历二叉树 时间限制(普通/Java):3000MS/10000MS 运行内存限制:65536KByte 总提交:107 测试通过:64 ...
- 数据结构 非递归实现中序遍历二叉树
参考书籍:c++ 数据结构 之前提到用递归的方法实现中序遍历二叉树,但是递归会浪费大量的空间与时间.这时候我们就在想用没有一种方式能够不依赖递归去实现遍历二叉树.我们之前学过一种数据结构可以实现这种方 ...
- C++数据结构——中序遍历二叉树
中序遍历二叉树 按完全二叉树的层次遍历给出一棵二叉树的遍历序列(其中用0表示虚结点),要求输出该二叉树的深度及中序遍历该二叉树得到的序列. 输入格式: 首先输入一个整数T,表示测试数据的组数,然后是T ...
- (※)中序遍历二叉树的非递归算法
在此之前,我们已经学习了中序遍历二叉树的递归算法,相信大家已经将其牢牢掌握了. 除了使用递归思想作为求解问题的钥匙,还可以借助栈来以非递归方式实现该问题的求解. 首先,我们要讨论存储二叉树结点信息的栈 ...
- 中序遍历二叉树的非递归实现(利用栈)
中序遍历二叉树的非递归实现 之前的博客写了递归的实现,说白了也就是不断自己调用自身,保持左根右的顺序.只需写出整体逻辑结构,程序会自己递归复杂的过程,大体即为: void inTraverseByRe ...
- 非递归中序遍历二叉树
中序遍历二叉树(递归) void inOrder(BT* root) {if (root == NULL)return;inOrder(root->lchild);cout << & ...
- C语言 中序遍历二叉树--非递归算法
完整代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h>typedef struct B ...
- 非递归中序遍历二叉树总结(2种方法)
算法 非递归中序遍历二叉树总结(2种方法) @author:Jingdai @date:2020.12.03 传送门 非递归先序遍历二叉树 非递归后序遍历二叉树 方法1 先序遍历是第一次遇到该节点遍历 ...
- 数据结构-中序遍历二叉树(基于C++)
二叉树是一种常见的数据结构,它由节点和边组成,每个节点最多有两个子节点,分别称为左子节点和右子节点.二叉树的遍历是指按照一定的顺序访问二叉树中的所有节点,常见的遍历方式有前序遍历.中序遍历和后序遍历. ...
- 数据结构之---非递归中序遍历二叉树
二叉树中序非递归遍历算法实现 大家好,我是逝去的粒子,从今天起,我将尝试着数据结构从0开始学习分享,此篇文章作为试验,一方面可以为自己做笔记防止遗忘,另一方面希望可以帮助大家.不废话,正式开始. 1. ...
最新文章
- 《Linux系统初讲》学习总结(一)
- qt中设置窗口左上角的图标
- _ZNote_Qt_定时器的总结
- c mysql封装 jdbc_彻底封装JDBC操作MySQL的连接。
- jquery通过数值改变球大小
- Appium移动自动化测试(一)--安装Appium(转)
- 如何用Python编写一个聊天室
- 宝塔nginx运行vue项目刷新404问题解决
- 目标函数,代价函数,损失函数
- java动态修改class_Java Agent入门学习之动态修改代码
- IBM x61 安装 ViaVoice Virtual Audio Cable
- 数据挖掘-二手车价格预测 Task03:特征工程
- linux qt 多点触摸,【转】基于Qt, TUIO和TSLIB的嵌入式Linux下的多点触摸设计
- 找网络高手联系方式_怎么才能联系到网络高手(找网络大牛联系方式)
- 2021职业技能鉴定2021维修电工证(中级)考试题
- 四、文件信息 五、进程环境
- 云计算具有哪些特点,主要分为哪几大类型?
- 【BZOJ1149】【APIO2007】风铃(完全二叉树+dp)
- 最快的扫雷记录,初级只需要0.49秒,一眨眼就结束的操作!
- Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)
热门文章
- linux chm 阅读器,linux下最好的chm阅读器KchmViewer,安装使用/与oklular,xCHM,gnochm简单比较...
- 上海it外包公司排名_it外包公司排行榜怎么来的?
- UNITY3D MMO开发指南(Lua)
- Pytorch实现基于卷积神经网络的面部表情识别(详细步骤)
- 云计算概念:什么是云计算
- 江西省中小学生学籍管理-登录(1)
- 遥感图像几何校正 ENVI
- php rrd 做统计数据,Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改...
- 企业网站开发需要注意什么事项?
- 那些年你错过的SOA