二叉排序树的中序遍历
排序二叉树的中序遍历
Problem Description
Input。
Output
Example Input
1 2
//错误代码:Time limit exceeded
BiTree CreatBiTree(BiTree r,int m)
{BiTree p,q,w;p = (BiTree)malloc(sizeof(BiTNode));p->rchild = NULL;p->lchild = NULL;p->data = m;q = r;while(q) {if(m>q->data){ w = q;q = q->rchild;}if(m<q->data) //1:系统不运行:这个地方没加else,我以为只要在while里循环就行了,当q为空,直接跳出,{ w = q; //巨巨找出错误,如果上一个if执行了,q变为空,么下一个ifm无法与q->data比较,所以错误q = q->lchild; //2:只判断了大于小于,没判读等于,如果为等于号,那么一直在while里循环,所以造成time limit}}if(m>w->data)w->rchild = p;elsew->lchild = p;return r;}
/*
Time limit 出现的原因:
很多时候我们看到Time Limit Exceeded马上会想到一定是算法太慢,不符合要求,其实往往还可能遇到一种情况是没有判断输入结束,不然
系统一直在那等你的输出结果,发现你一直不输出,或者程序一直不退出,所以给Time Limit Exceeded。
*///下面是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10001
int j;
typedef struct BiTNode
{int data;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreatBiTree(BiTree r,int m)
{BiTree p,q,w;p = (BiTree)malloc(sizeof(BiTNode));p->rchild = NULL;p->lchild = NULL;p->data = m;q = r;while(q){if(m>q->data){ w = q;q = q->rchild;}else if(m<=q->data) //加了一个else,一个等于号{ w = q;q = q->lchild;}}if(m>w->data)w->rchild = p;elsew->lchild = p;return r;}
BiTree InitBiTree() //初始化头结点
{BiTree root;root = (BiTree)malloc(sizeof(BiTNode));root->lchild = NULL;root->rchild = NULL;return root;}
void midPrint(BiTree root)//中序输出
{if(root){midPrint(root->lchild);if(j==1){j++;printf("%d",root->data);}elseprintf(" %d",root->data);midPrint(root->rchild);}
}
int main()
{int m;scanf("%d",&m);BiTree root;int a[maxsize],i;j = 1;root = InitBiTree();scanf("%d",&root->data);for(i = 1;i<=m-1;i++){scanf("%d",&a[i]);CreatBiTree(root,a[i]);}midPrint(root);printf("\n");return 0;
}
二叉排序树的中序遍历相关推荐
- 二叉排序树的中序遍历规律_看懂这篇文章,玩转二叉查找树
所谓二叉查找树,就是按照二分进行查找,每次查询只需要选择其中一个子树就进行查找,从而减少查找次数,提升查询效率! 一.介绍 在前面的文章中,我们对树这种数据结构做了一些基本介绍,今天我们继续来聊聊一种 ...
- 二叉树 排序二叉树-可以通过中序遍历得到排序的数据 二叉排序树时间复杂度O(logn),...
二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 虽然二叉排序树的最坏效率是O(n),但它支持动 ...
- 树结构练习——排序二叉树的中序遍历
树结构练习--排序二叉树的中序遍历 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的 ...
- JAVA 中序遍历的非递归栈实现
题目描述 请实现一个函数,检查一棵二叉树是否为二叉查找树. 给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树. import java.util.*;/* ...
- 二叉树的前序遍历、中序遍历、后序遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 为什么需要树这种数据结构 树的常用术语 二叉树的概念 二叉树遍历的说明 实现二叉树 实现二叉树的遍历 二叉树查找结点 二叉树 ...
- python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...
- python实现二叉树的重建1 之由前序遍历和中序遍历重建
前言 此题是关于树的面试题目的常见题型,题目的含义很清晰,这个就不用多说了 解法 关于这道题的解法有很多不同的样式,通用的解法是这样的: 假如现在我们有如下两个遍历的情况 preorder: [1, ...
- 通过前序遍历和中序遍历构建二叉树 python实现
前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...
- python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...
最新文章
- 网页中显示flash的时候部分显示红色叉好,而有的能够正常显示
- u-boot分析之编译体验(零)
- 债券指数(Bond Index)
- C#中找不到MouseWheel事件的解决办法
- 苹果id是什么格式的_iTunes Converter mac(音频格式转换工具)
- Introduction to PCI Express | PDF
- 下载文件扩展名php,[宜配屋]听图阁
- 仿射组合(Affine Combination)的定义与性质
- 全球顶尖!StarVR推出搭载集成眼动追踪的VR设备
- ps 将图片背景色改为透明
- epub与txt的区别是什么?有什么好用的IOS手机epub阅读器
- 依托TAPD的敏捷实践
- 快递鸟预约快递员上门揽件API开发指南
- 语义分割论文-DeepLab系列
- 将矩阵逆时针旋转45°后输出
- SQL视图是什么?视图的作用,视图可以更改么?
- 连接器E-mark认证要准备什么资料?
- QT教程 休闲棋牌游戏开发(2)
- 如何编辑简单打字游戏
- 捷讯fw300r虚拟服务器口号,迅捷FW300R无线路由器WDS无线桥接设置方法