3.9重建二叉树
2014-09-10 17:21
337 查看
#include <iostream> using namespace std; struct Node { Node() : lchild(0), rchild(0){ } Node(char v):val(v), lchild(0), rchild(0){ } char val; Node *lchild, *rchild; }; void Rebuild(char *pPreOrder, char * pInOder, int len, Node **pRoot) { if(!pPreOrder || !pInOder) return; if((*pRoot) == NULL && len >= 1) { *pRoot = new Node(*pPreOrder); } if(len <= 1) return; char *s = pInOder, *e = pInOder + len - 1; while(s <= e) { if(*s == *pPreOrder) break; s++; } if(s <= e) { Rebuild(pPreOrder+1, pInOder, s - pInOder, &((*pRoot)->lchild)); Rebuild(pPreOrder + (s - pInOder) + 1, s+1, e - s, &((*pRoot)->rchild)); } } void print(Node *root) { if(!root) return; cout << root->val << " "; print(root->lchild); print(root->rchild); } int main(void) { char pPreOder[] = "abdcef"; char pInOder[] = "dbaecf"; int len = strlen(pInOder); Node *root = NULL; Rebuild(pPreOder, pInOder, len, &root); print(root); return 0; }
相关文章推荐
- 重建二叉树_《编程之美》3.9
- 《编程之美》3.9重建二叉树
- 《编程之美》3.9重建二叉树
- 重建二叉树(剑指offer6、编程之美3.9)
- 编程之美——3.9重建二叉树和3.10分层遍历二叉树(Java and C++)
- [编程之美3.9]重建二叉树
- 编程之美3.9 重建二叉树
- 3.9 重建二叉树
- 3.9重建二叉树
- 编程之美3.9 重建二叉树
- 编程之美系列: 3.9 重建二叉树
- 3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
- 编程之美:第三章 结构之法 3.9重建二叉树
- 《编程之美》读书笔记19: 3.9 重建二叉树
- 编程之美 3.9 :重建二叉树
- 3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
- 编程之美--3.9 重建二叉树
- [编程之美] PSet3.9 重建二叉树
- 读书笔记之编程之美 - 3.9 重建二叉树
- 重建二叉树(编程之美3.9)