HDU 1710-Binary Tree Traversals
2010-05-29 15:07
267 查看
好久没好好AC了, 这学期的数据结构也没好好学。恶补ing...
题目大意:告诉二叉树的先序序列和中序序列,求后序序列。
思路:先序建立二叉链表,再后续遍历二叉树。
题目大意:告诉二叉树的先序序列和中序序列,求后序序列。
思路:先序建立二叉链表,再后续遍历二叉树。
#include <cstdio> using namespace std; typedef struct Binary { int data; Binary *lchild, *rchild; Binary() { lchild = NULL; rchild = NULL; } }*BitTree; int pre[1010], in[1010]; void Build(BitTree &root, int len, int pst, int ped, int inst, int ined)//先序建树 { int i, l_len = 0; if (len <= 0) return ; root = new Binary; root->data = pre[pst]; for (i = inst; i <= ined; i++) { if (in[i] == pre[pst]) { l_len = i - inst; break; } } Build(root->lchild, l_len, pst+1, pst+l_len, inst, i-1); Build(root->rchild, len-1-l_len, pst+l_len+1, ped, i+1, ined); } void Travel(Binary *root)//后序遍历 { int i; if (root) { Travel(root->lchild); Travel(root->rchild); printf("%d ", root->data); } } int main() { int i, n; BitTree root; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; i++) { scanf("%d", &pre[i]); } for (i = 0; i < n; i++) { scanf("%d", &in[i]); } Build(root, n, 0, n-1, 0, n-1); Travel(root->lchild); Travel(root->rchild); printf("%d/n", root->data); } return 0; }
相关文章推荐
- hdu 1710 Binary Tree Traversals
- HDU 1710 Binary Tree Traversals
- hdu_1710_Binary Tree Traversals(二叉树的重构)
- HDU1710——Binary Tree Traversals(二叉树)
- HDU 1710 Binary Tree Traversals 二叉树
- 重建二叉树 Binary Tree Traversals HDU - 1710
- hdu 1710 Binary Tree Traversals
- HDU 1710 Binary Tree Traversals
- HDU-1710 Binary Tree Traversals 二叉树遍历
- hdu 1710 Binary Tree Traversals 前序遍历和中序推后序
- HDU 1710 Binary Tree Traversals(二叉树遍历)
- hdu 1710 Binary Tree Traversals
- hdu1710 Binary Tree Traversals
- hdu——1710——Binary Tree Traversals
- HDU---1710-Binary Tree Traversals (二叉树遍历)
- hdu 1710 Binary Tree Traversals
- ACM 数据结构-并查集 HDU 1710 Binary Tree Traversals .
- hdu 1710:Binary Tree Traversals
- HDU 1710 Binary Tree Traversals
- hdu 1710 binary tree traversals 二叉树遍历