面试题6:重建二叉树
来源:互联网 发布:discuz源码安装 编辑:程序博客网 时间:2024/05/16 10:12
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
思路:递归建立二叉树
源程序:
#include "stdio.h"#include "string.h"#include "stdlib.h"typedef struct BiTNode{ char ch;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;int GetPos(char* str, char ch){ for(int i=0; i<strlen(str); i++) { if(ch==str[i]) { return i; } } return -1;}void Rebuild(char* PreOrder, char* InOrder, int len, BiTree &L){ if(L==NULL) return; L=(BiTree)malloc(sizeof(BiTNode)); L->ch = PreOrder[0]; int i=GetPos(InOrder, PreOrder[0]); if(i>=len-1) L->rchild=NULL; if(i==0) L->lchild=NULL; Rebuild(&PreOrder[1], InOrder, i, L->lchild); Rebuild(&PreOrder[i+1], &InOrder[i+1],len-i-1, L->rchild); }void PostOrderRetrieval(BiTree root) //后序遍历树{ if(root==NULL) return; if(root->lchild !=NULL) PostOrderRetrieval(root->lchild); if(root->rchild !=NULL) PostOrderRetrieval(root->rchild); printf("%c ", root->ch);}int main(){ BiTree root; root = (BiTree)malloc(sizeof(BiTNode)); Rebuild("abdehcfgij", "dbheafcgji", 10, root);printf("后序遍历结果:\n"); PostOrderRetrieval(root); free(root);}
结果:
后序遍历结果:d h e b f j i g c a
- 面试题6:重建二叉树
- 重建二叉树(面试题 6)
- 面试题6:重建二叉树
- 面试题6- 重建二叉树
- 面试题6 重建二叉树
- 面试题6:重建二叉树
- 面试题6 重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6: 二叉树的重建
- 面试题6:重建二叉树
- 【面试题6】重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- DataSet一些Knowlodge
- ubuntu更新软件包存放目录
- 如何在SAS中重新构建限价指令簿(Limit Order Book):使用HashTable
- linux下c语言实现多线程文件复制
- [phpMyadmin笔记-1] MySQL数据库操作
- 面试题6:重建二叉树
- android 4.12 定制Restart功能
- 网站无法访问,报错Server Application Unavailable的问题
- 点击通知栏图标、桌面图标会导致应用重启
- SOCK_STREAM与SOCK_DGRAM套接口类型
- dede 自动审核功能的实现
- VIM命令退出
- WebService涉及的主要概念
- OOAD笔记九