将二叉树PreOrder, inOrder序列化后,再恢复树形结构
2012-08-26 13:14
375 查看
/* you are given a system of passing binary trees among 2 ppl Step1: convert the tree to preorder and inorder strings Step2:send those strings to the intended person Step3:get back tree from the strings whats your strategy of testing?write various test scenarios.---10 marks */ #include <iostream> char pre[7]; char in[7]; int cnt = 0; struct node { char data; node* left; node* right; node(int eData, node* eLeft, node* eRight) { data = eData; left = eLeft; right = eRight; } }; void preOrder(node* n) { if (!n) return; pre[cnt++] = n->data; preOrder(n->left); preOrder(n->right); }; void inOrder(node* n) { if (!n) return; inOrder(n->left); in[cnt++] = n->data; inOrder(n->right); }; node* restoreTree(int preLeft, int preRight, int inLeft, int inRight) { if (preLeft < preRight) { char curData = pre[preLeft]; int i = inLeft; for (; i <= inRight; i++) { if (in[i] == curData) break; } int num = i - inLeft; node* curNode = new node(curData, NULL, NULL); curNode->left = restoreTree(preLeft + 1, preLeft + num, inLeft, i - 1); curNode->right = restoreTree(preLeft + num + 1, preRight, i + 1, inRight); return curNode; } else if (preLeft == preRight) return new node(pre[preLeft], NULL, NULL); }; int main() { node* n6 = new node('G', NULL, NULL); node* n5 = new node('D', n6, NULL); node* n4 = new node('E', NULL, NULL); node* n3 = new node('B', n5, n4); node* n2 = new node('F', NULL, NULL); node* n1 = new node('C', n2, NULL); node* n0 = new node('A', n3, n1); cnt = 0; preOrder(n0); cnt = 0; inOrder(n0); node* root = restoreTree(0, 6, 0, 6); return 0; }
相关文章推荐
- 二叉树的先序遍历(preorder),中序遍历(inorder),后序遍历(postorder)
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
- Oracle恢复删除数据 && connect by 树形结构查询
- 基础数据结构算法_二叉树的恢复和非递归遍历
- Atitit. 构造ast 语法树的总结attilax oao 1. Ast结构树形12. ast view (自是个160k的jar )22.1. 多条语句ast结构22.2. 变量定义 int b,c; 的ast结构22.3. 方法调用meth1(a=1,b=2,c=3); 的ast结构23. 误解的问题33.1. 语法书子能是个二叉树,实际上多叉树越好..33.2. 非要不个ast放到个s
- 输出树形结构的二叉树
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
- 优先队列,由于优先队列的树形结构是完全二叉树,所以可以使用数组的形式去存储,我的上一个博客是用二叉树的形式去存储优先队列的
- 【数据结构与算法学习笔记】PART4 树形结构(二叉树,堆)
- (Leetcode)利用preorder-inorder/postorder-inorder构建二叉树
- 重建二叉树,给出一个二叉树的前序和中序遍历,恢复二叉树的结构
- construct-binary-tree-from-preorder-and-inorder-traversal——前序和中序求二叉树
- c语言打印二叉树树形结构(转载自:http://blog.csdn.net/xzongyuan)
- 数据结构之二叉树: 二叉树序列化
- 数据结构_树形结构_二叉树
- 数据结构学习笔记(三) 树形结构之一般二叉树的顺序存储_二叉链表表示法_转换
- 数据结构学习笔记(三) 树形结构之二叉树的前、中、后序遍历递归方法
- 数据结构学习笔记(三) 树形结构之对称序线索化二叉树
- 已知二叉树的先序遍历(preorder)和中序遍历(inorder) 或 中序和后序(postorder),还原该二叉树
- [树结构]二叉树的重建和序列化