URAL 1136 Parliament 二叉树水题 BST后序遍历建树
2013-07-09 01:21
330 查看
二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的。
跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递归儿子继续建树。
代码:
跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递归儿子继续建树。
代码:
#include <cstdio> #include <cstdlib> const int maxn = 70000; struct Node { int v; Node *l; Node *r; }; int arr[maxn]; bool flag = false; Node* addnode(int s, int e) { if (s > e) return NULL; Node* u = (Node*) malloc (sizeof(Node*)); u->v = arr[e]; if (s == e) { u->r = u->l = NULL; return u; } int i; for (i = e - 1; i >= s; i--) if (arr[i] < arr[e]) break; u->l = addnode(s, i); u->r = addnode(i + 1, e - 1); return u; } void output(Node* u) { if (u->r != NULL) output(u->r); if (u->l != NULL) output(u->l); if (flag) printf(" "); flag = true; printf("%d", u->v); } int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &arr[i]); Node* root = addnode(1, n); output(root); printf("\n"); return 0; }
相关文章推荐
- URAL 1136 Parliament 二叉树水题 BST后序遍历建树
- URAL 1136 Parliament 二叉树水题 BST后序遍历建树
- Ural 1136 Parliament / 后序遍历二叉树
- [二叉树建树] 后序遍历与中序遍历建立二叉树
- ural 1136. Parliament -搜索二叉树
- 二叉树的建树、遍历(先序、中序、后序、层次)(递归和非递归)--Java实现
- Tree Recovery(二叉树建树,后序遍历)
- 二叉树-建树,层次遍历,先序遍历,中序遍历,后序遍历
- PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
- [二叉树建树]1119. Pre- and Post-order Traversals (30) (前序和后序遍历建立二叉树)
- 判断一个数据序列是否是BST后序遍历的结果
- 模板-根据中序,后序建树层次遍历输出
- LeetCode 538 Convert BST to Greater Tree(二叉树的右中左遍历)
- 二叉树的前、中、后序遍历
- 二叉树先序、中序、后序遍历的非递归实现
- 二叉树的迭代后序遍历
- 数据结构学习笔记-二叉树的前、中、后序遍历,递归、非递归方式
- php实现先序、中序、后序遍历二叉树
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- Leetcode - Tree - 106. Construct Binary Tree from Inorder and Postorder Traversal(根据中序遍历和后序遍历重构二叉树)