二叉树,数据结构.★实验任务排队买火车票是一件困惑的事,尤其是在春节、国庆等长假.假设一列队伍有N个人(从前往后编号为1、2…N),每个人有一个rp值,对于编号为p的人,小明想计算排在
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 12:44:06
![二叉树,数据结构.★实验任务排队买火车票是一件困惑的事,尤其是在春节、国庆等长假.假设一列队伍有N个人(从前往后编号为1、2…N),每个人有一个rp值,对于编号为p的人,小明想计算排在](/uploads/image/z/6846634-10-4.jpg?t=%E4%BA%8C%E5%8F%89%E6%A0%91%2C%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.%E2%98%85%E5%AE%9E%E9%AA%8C%E4%BB%BB%E5%8A%A1%E6%8E%92%E9%98%9F%E4%B9%B0%E7%81%AB%E8%BD%A6%E7%A5%A8%E6%98%AF%E4%B8%80%E4%BB%B6%E5%9B%B0%E6%83%91%E7%9A%84%E4%BA%8B%2C%E5%B0%A4%E5%85%B6%E6%98%AF%E5%9C%A8%E6%98%A5%E8%8A%82%E3%80%81%E5%9B%BD%E5%BA%86%E7%AD%89%E9%95%BF%E5%81%87.%E5%81%87%E8%AE%BE%E4%B8%80%E5%88%97%E9%98%9F%E4%BC%8D%E6%9C%89N%E4%B8%AA%E4%BA%BA%EF%BC%88%E4%BB%8E%E5%89%8D%E5%BE%80%E5%90%8E%E7%BC%96%E5%8F%B7%E4%B8%BA1%E3%80%812%E2%80%A6N%EF%BC%89%2C%E6%AF%8F%E4%B8%AA%E4%BA%BA%E6%9C%89%E4%B8%80%E4%B8%AArp%E5%80%BC%2C%E5%AF%B9%E4%BA%8E%E7%BC%96%E5%8F%B7%E4%B8%BAp%E7%9A%84%E4%BA%BA%2C%E5%B0%8F%E6%98%8E%E6%83%B3%E8%AE%A1%E7%AE%97%E6%8E%92%E5%9C%A8)
二叉树,数据结构.★实验任务排队买火车票是一件困惑的事,尤其是在春节、国庆等长假.假设一列队伍有N个人(从前往后编号为1、2…N),每个人有一个rp值,对于编号为p的人,小明想计算排在
二叉树,数据结构.
★实验任务
排队买火车票是一件困惑的事,尤其是在春节、国庆等长假.假设一列队伍有N个
人(从前往后编号为1、2…N),每个人有一个rp值,对于编号为p的人,小明想计
算排在他前面人中rp值比他高的人数p(a),以及整个队列中rp值比他高的人数p(b).
★数据输入
输入第一行包括一个正整数N(1
二叉树,数据结构.★实验任务排队买火车票是一件困惑的事,尤其是在春节、国庆等长假.假设一列队伍有N个人(从前往后编号为1、2…N),每个人有一个rp值,对于编号为p的人,小明想计算排在
我刚刚写的作业 呵呵
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#define OVERFLOW 0
//二叉树的二叉链表存储定义
struct Node
{
char data;
struct Node * lchild, * rchild;
};
typedef struct Node BiTNode;
typedef BiTNode * BiTree;
//
void CreateBiTree(BiTree &T)
{
char ch;
scanf("%c", &ch); // * 按先序次序输入二叉树中的结点的值(一个字符)构造二叉链表表示的二叉树,
if (ch=='#') T=NULL; // * 字符'#'表示空树
else{
if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return;
}//CreateBiTree
void PreOrderTraverse(BiTree T)
{
//按先序遍历次序输出二叉树T中的结点的值(一个字符),二叉树T用二叉链表存储.
if (T)
{
cout<<T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
return;
}//PreOrderTraverse
void InOrderTraverse(BiTree T)
{
//按中序遍历次序输出二叉树T中的结点的值(一个字符),二叉树T用二叉链表存储.
if (T)
{
InOrderTraverse(T->lchild);
cout<<T->data;
InOrderTraverse(T->rchild);
}
return;
}//InOrderTraverse
void PostOrderTraverse(BiTree T)
{
//按后序遍历次序输出二叉树T中的结点的值(一个字符),二叉树T用二叉链表存储.
if (T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout<<T->data;
}
return;
}//PostOrderTraverse
void main()
{
BiTree T=NULL;
cout << "请按先序顺序输入二叉树中的结点(其中,'#'表示空树):" <<endl;
CreateBiTree(T);
cout << endl;
cout << "先序遍历该二叉树得到的序列为:" <<endl;
PreOrderTraverse(T);
cout << endl <<endl;
cout << "中序遍历该二叉树得到的序列为:" <<endl;
InOrderTraverse(T);
cout << endl <<endl;
cout << "后序遍历该二叉树得到的序列为:" <<endl;
PostOrderTraverse(T);
cout << endl <<endl;
return;
}