博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5444 Elven Postman
阅读量:4156 次
发布时间:2019-05-26

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

hdu5444 Elven Postman

标签:二叉树


/*    题意:打印二叉树根节点到某一结点的路径。          建树,题目会给一串数字,以第一个数字为根节点。余下的值若比父节点大,值在父节点的W;反之,则在E。*/#include
#include
#include
#include
using namespace std;vector
ans;struct Node{ //建立结点,用结构体加指针,v表示结点的值 int v; Node *left, *right; //左右子树 Node(): left(NULL), right(NULL) {} //创建新结点} tree;Node* root;Node *newnode(){ return new Node(); //申请新结点}Node* Create(Node *rt, int v){ //建树,传入根结点和需要建立的值 if(rt == NULL){ //根结点为空,将值赋给根结点 rt = newnode(); rt->v = v; rt->left = rt->right = NULL; return rt; } if(rt->v > v) rt->right = Create(rt->right, v); //输入值
<父节点,递归建立右子树 else rt->
left = Create(rt->left,v); //输入值>父节点,递归建立左子树 return rt;}void get_path(Node *root, int x){ if(root->v == x){ puts(""); return ; } else if(root->v > x){ putchar('E'); get_path(root->right, x); } else{ putchar('W'); get_path(root->left, x); }}int main(){ int T, n, q; scanf("%d", &T); while(T--){ scanf("%d", &n); root = NULL; int v; for(int i = 0; i < n; i++){ scanf("%d", &v); root = Create(root, v); //边输入边建树 } scanf("%d", &q); for(int i = 0; i < q; i++){ int d; scanf("%d", &d); get_path(root, d); } } return 0;}

转载地址:http://nikxi.baihongyu.com/

你可能感兴趣的文章
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
java反编译
查看>>
Class.forName( )你搞懂了吗?——转
查看>>
jarFile
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>
数学等于号是=那三个横杠是什么符
查看>>
HTTP协议详解
查看>>
java多线程中的join方法详解
查看>>
ECLIPSE远程调试出现如下问题 ECLIPSE中调试代码提示找不到源
查看>>
java abstract修饰符
查看>>
数组分为两部分,使得其和相差最小
查看>>
有趣的排序——百度2017春招
查看>>
二叉树的最近公共祖先LCA
查看>>
数组中累加和为定值K的最长子数组长度
查看>>
素数对--腾讯2017校招编程
查看>>
JAVA集合--ArrayList实现原理
查看>>
synchronized与Lock
查看>>