![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-二叉树
LYoGa
这个作者很懒,什么都没留下…
展开
-
UVA699
#include #include typedef struct Node{ int v; struct Node *left, *right; };//创建节点 Node * root; int count;//记录每个垂直同一条线的数位置 int a[250];//存储各个垂直数 Node *Buildtree(int n){ if(n == -1) return NUL原创 2013-07-12 19:59:19 · 618 阅读 · 0 评论 -
UVA10562- Undraw the Trees
题意:依照左边的树的图形,输出右边的序列 思路:刚开始看到那个图就蒙了。。。不懂怎么做,后来看到别人的想法,就试着用图的遍历,然后利用DFS,递归将序列输出,不过要注意当为空的时候,应该输出“()”。 #include #include #include #define N 250 char str[N][N]; int cnt; void dfs(int x, int y) { in原创 2013-08-25 20:54:32 · 721 阅读 · 0 评论 -
关于先序和中序,中序和后序建树的一些方法
#include #include #include typedef struct TNode{ char data; struct TNode *left, *right; }Node; char PreArray[100] = "DBACEGF"; //先序序列 char InArray[100] = "ABCDEFG"; //中序序列 char PostArray[100] =原创 2013-08-25 08:40:59 · 1407 阅读 · 4 评论 -
UVA548- Tree
题意:题目给出中序序列数组和后序序列数组,求出路径和最小的那个叶节点 思路:利用中序和后序序列数组建树,然后遍历,更新最小的那个叶节点的值,不过要注意数组的大小,题目最多可以有10000个节点。。。。 #include #include #include #include #define N 10005 typedef struct node{ int data; struct no原创 2013-08-24 19:28:58 · 755 阅读 · 0 评论 -
UVA839 - Not so Mobile
题意:距离*重量,要使整个天平各个节点左右相等 思路:利用递归,从最底层判断是否相等 #include int flag; int dfs() { int wl, dl, wr, dr; scanf("%d %d %d %d", &wl, &dl, &wr, &dr); if (wl == 0) wl = dfs(); if (wr == 0) wr = dfs(); i原创 2013-08-23 21:07:27 · 768 阅读 · 0 评论 -
UVA327- Evaluating Simple C Expressions
思路:主要在要开两个数组,一个数组存数改变前的值,另一个数组存数改变后的值 #include #include #include #include int main(){ char str[200]; while (gets(str) != NULL) { printf("Expression: "); puts(str); char s[200]; memset(原创 2013-08-22 21:26:37 · 745 阅读 · 0 评论 -
UVA712-S-Trees
题意:输入n,n为数的层数,然后输入最底层的每个节点的叶子节点的值,输入m条指令,从头节点开始,0为向左,1为向右,最后输出指令所要的字符串 思路:用数组模拟,假设头节点为1,之后每个节点的左右节点分别为2 * k,2 * k + 1 #include #include #include int main() { int n, m, t = 0; char s[100], str[原创 2013-08-22 21:23:32 · 752 阅读 · 0 评论 -
二叉树的三种遍历
#include #include typedef struct treeNode { struct treeNode *left,*right; int data; }treeNode; treeNode* createTree(){ treeNode *node[10]; int i = 0; for(i = 0 ; i<10;i++) { node[i] = (tre转载 2013-07-24 09:43:02 · 659 阅读 · 0 评论 -
HDU3999
#include #include #include typedef struct TNode{ int v; struct TNode *left, *right; }Node;i//建立节点 Node *Buildtree(Node * root, int n){ if(root == NULL){ root = (Node*)malloc(sizeof(Node));原创 2013-07-12 19:52:34 · 822 阅读 · 0 评论 -
HDOJ1671
字典树,照模板写的。。。。。 #include #include #include char arr[20]; typedef struct Trie{ int v; Trie *next[10]; }Trie; Trie *root; void createTrie(char *s){ Trie * p = root, *q; int len = strlen(arr);原创 2013-07-25 15:51:08 · 630 阅读 · 0 评论 -
HDOJ 1251
典型字典树 #include #include #include #include using namespace std; #define MAX 26 typedef struct Trie{ int v; struct Trie *next[MAX]; }Trie; Trie root; void createTrie(char *str){ int len = strle原创 2013-07-25 10:47:43 · 688 阅读 · 0 评论 -
字典树模板
typedef struct Trie{ struct Trie *next[MAX]; int v; }; Trie *root; void createTrie(char *str){ int len = strlen(str); Trie *p = &root, *q; for(int i = 0;i < len; i++){ int id = str[i] - 'a';转载 2013-08-16 15:38:18 · 642 阅读 · 0 评论