二叉树的先序中序后序遍历问题
来源:互联网 发布:淘宝限制购物怎么解除 编辑:程序博客网 时间:2024/06/05 04:20
已知先序和中序或中序和后序序列建立二叉树并遍历
#include<iostream>#include<queue>using namespace std;typedef struct BTNode { char data; struct BTNode *lchild, *rchild;}BTNode, *BTree;queue<BTree> Q;void DLR(BTree T){ if (T) { cout << T->data<<" "; DLR(T->lchild); DLR(T->rchild); }}void LDR(BTree T){ if (T) { LDR(T->lchild); cout << T->data << " "; LDR(T->rchild); }}void LRD(BTree T){ if (T) { LRD(T->lchild); LRD(T->rchild); cout << T->data<<" "; }}void LevelOrderTraverse(BTree T){ cout << T->data << " "; if(T->lchild) Q.push(T->lchild); if(T->rchild) Q.push(T->rchild); Q.pop(); if (!Q.empty())LevelOrderTraverse(Q.front());}void Create_posOrder(BTree &T,char *pre,char *mid,int n)//已知先序、后序时建立二叉树{ T = new BTNode; if (n <= 0) { T = NULL; return; } T->data = *pre; char *pos; int i; for (pos = mid; pos < mid + n; pos++) { if (*pos == *pre) break; } i = pos - mid; Create_posOrder(T->lchild, pre + 1,mid,i); Create_posOrder(T->rchild, pre+i + 1,pos + 1, n - i - 1);}void Create_preOrder(BTree &T,char *mid,char *pos,int n)//已知中序、后序时建立二叉树{ T = new BTNode; if (n <= 0) { T = NULL; return; } char *pre; int i; for (pre = mid; pre < mid + n; pre++) { if (*pre == *(pos + n - 1)) break; } i = pre - mid; T->data = *pre; Create_preOrder(T->lchild, mid ,pos,i); Create_preOrder(T->rchild, pre + 1,pos+i,n-i-1);}int main(){ char pre[] = "ABDEGCF";//先序序列 char mid[] = "DBGEACF";//中序序列 char pos[] = "DGEBFCA";//后序序列 BTree T1,T2; Create_posOrder(T1, pre, mid, strlen(pre)); cout << "先序遍历:"; DLR(T1); cout << endl; cout << "中序遍历:"; LDR(T1); cout << endl; cout << "后序遍历:"; LRD(T1); cout << endl; cout << "层序遍历:"; Q.push(T1); LevelOrderTraverse(Q.front()); cout << endl; cout << endl; Create_preOrder(T2, mid, pos, strlen(pos)); cout << "先序遍历:"; DLR(T2); cout << endl; cout << "中序遍历:"; LDR(T2); cout << endl; cout << "后序遍历:"; LRD(T2); cout << endl; cout << "层序遍历:"; Q.push(T2); LevelOrderTraverse(Q.front()); cout << endl; cout << endl; return 0;}
0 0
- 二叉树的先序中序后序遍历问题
- 二叉树的遍历问题
- 二叉树的遍历问题
- 二叉树遍历的问题
- 二叉树遍历问题
- 二叉树遍历问题
- 二叉树遍历问题
- 关于二叉树遍历的问题
- 二叉树的遍历问题总结
- 【7004】二叉树的遍历问题
- 【7005】二叉树的遍历问题2
- 有关二叉树的遍历问题
- LeetCode二叉树遍历的问题
- 二叉树的先序中序后序遍历
- 二叉树的建立、遍历,以及给定二叉树前序遍历和中序遍历重建二叉树问题。
- 数据结构--二叉树遍历问题
- 问题 J: 二叉树遍历
- 问题 J: 二叉树遍历
- iOS越狱检测
- android-CTS调试方法
- KMP算法
- RandomAccessFile
- ecelpse网格DEBUG步骤
- 二叉树的先序中序后序遍历问题
- JAVA-五子棋实现
- 本地环境 XAMPP+phpStorm+XDebug+chrome 配置和断点调试
- HDU 1597 find the nth digit 水题
- github优秀开源项目
- IOS 成功失败的Block写法
- 静态变量(static variables)那点事
- Autocomplete
- 【AJAX】学习总结