hdu-5444(简单建树和遍历)
来源:互联网 发布:windows一直在准备配置 编辑:程序博客网 时间:2024/06/04 12:02
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444
题意:树为二叉树,输入n个数的第一个数为根节点,第二个数和这个根节点比较大小,假如大于当前根节点的值,就往右边的节点走,小于往左边的节点走。直到当前节点的左子树节点为空或右子树节点为空,这个值就确定了位置,不然一直循环下去比较(结合代码理解)。重点内容
代码:
#include <iostream>#include <stdio.h>#include <vector>#include <queue>using namespace std;const int maxn = 1000+5;int T,n,a[maxn],q,x[maxn];struct Node{ int v; Node *left,*right; Node():left(NULL),right(NULL) {}};Node* newnode(){ return new Node();}Node* root;void addnode(int x)//建树{ Node* u=root; while(1) { if(x>u->v) { if(u->left==NULL) { u->left=newnode();//特别要注意这里,要先开辟空间,再赋值u=u->left。 u=u->left; u->v=x; return ; } else u=u->left; } else { if(u->right==NULL) { u->right=newnode(); u=u->right; u->v=x; return; } u=u->right; } } return;}void ans(int x)//遍历输出答案{ Node* u=root; while(u->v!=x) { if(x>u->v) { u=u->left; printf("W"); } else { u=u->right; printf("E"); } }}int main(){ scanf("%d",&T); while(T--) { root = newnode(); scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&a[i]); if(i!=0) addnode(a[i]); else { root->v=a[i]; } } scanf("%d",&q); for(int i=0; i<q; i++) { scanf("%d",&x[i]); if(x[i]==root->v) printf("\n"); else { ans(x[i]); printf("\n"); } } } return 0;}
阅读全文
0 0
- hdu-5444(简单建树和遍历)
- hdu 5444Elven Postman(建树,遍历)
- HDU 5444-二叉树的遍历+建树
- 建树和遍历树(前序)
- 数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
- C/C++建树和遍历
- hdu 5444 Elven Postman(模拟建树)
- 先跟遍历和中跟遍历建树
- The Falling Leaves 简单的遍历+建树
- pat 1004---简单的建树+层次遍历
- HDU 5444 二叉树的遍历,先根据先序遍历建树
- uva 112 Tree Summing(建树+遍历)
- 前序遍历和中序遍历 重建树
- 由后序遍历和中序遍历建树
- hdu 1805 Expressions (建树与层序遍历)
- 二叉树总结—建树和4种遍历方式(递归&&非递归)
- 二叉树——根据先序(后序)和中序遍历建树
- hdu(2795)——Billboard(简单的线段树的询问,以及建树的技巧)
- js根据日期计算星期几
- linux之cut命令的用法
- Java解析yaml
- 杨辉三角
- 状压dp Mondriaan's Dream
- hdu-5444(简单建树和遍历)
- 【课程笔记】遥感技术应用实验_几何校正
- 使用python将xml文件解析成html文件
- ffmpeg一些小实验
- C语言文件读写操作总结
- 利用weka.jar算法改进
- 20个高级Java面试题汇总
- Chrome隐私设置错误,您的链接不是私密连接
- LDA and QDA