二叉树的遍历_C++实现
来源:互联网 发布:靠谱韩代 淘宝店 良心 编辑:程序博客网 时间:2024/05/01 21:03
(1)二叉树的建立
typedef struct BinaryTreeNode {char value;struct BinaryTreeNode *left;struct BinaryTreeNode *right;}BiTreeNode, *BiTree;//二叉树的建立void createBiTree(BiTree &root) {char data;cin >> data;if(data == '#') {root = NULL;}else {root = new BiTreeNode();root->value = data;createBiTree(root->left);createBiTree(root->right);}}
(2)二叉树的先序遍历
//先序遍历二叉树_递归void preOrder_Recursively(BiTree &root) {if(root != NULL) {cout << root->value << " ";preOrder_Recursively(root->left);preOrder_Recursively(root->right);}}//先序遍历二叉树_非递归void preOrder_UnRecursively(BiTree &root) {stack<BiTree> sta;BiTree p = root; //p为遍历指针while(p != NULL || !sta.empty()) {if(p != NULL) {sta.push(p);cout << p->value << " ";p = p->left;}else {p = sta.top();sta.pop();p = p->right;}}}
(3)二叉树的中序遍历
//中序遍历二叉树_递归void inOrder_Recursively(BiTree &root) {if(root != NULL) {inOrder_Recursively(root->left);cout << root->value << " ";inOrder_Recursively(root->right);}}//中序遍历二叉树_非递归void inOrder_UnRecursively(BiTree &root) {stack<BiTree> sta;BiTree p = root; //p为遍历指针while(p != NULL || !sta.empty()) {if(p != NULL) {sta.push(p);p = p->left;}else {p = sta.top();sta.pop();cout << p->value << " ";p = p->right;}}}
(4)二叉树的后序遍历
void postOrder_UnRecursively(BiTree &root) {stack<BiTreePost> sta;BiTree p = root;BiTreePost post;while(p != NULL || !sta.empty()) {while(p != NULL) {post = new BiTreeNodePost();post->biTree = p;post->tag = 'L';sta.push(post);p = p->left;}while(!sta.empty() && (sta.top())->tag == 'R') {post = sta.top();sta.pop();cout << post->biTree->value << " ";}if(!sta.empty()) {BiTreePost post = sta.top();post->tag = 'R';p = post->biTree->right;}}}
(5)二叉树的层次遍历
//层次遍历void levelOrder(BiTree &root) {queue<BiTree> que;BiTree p = root;if(p != NULL)que.push(p);while(!que.empty()) {p = que.front();cout << p->value << " ";que.pop();if(p->left != NULL)que.push(p->left);if(p->right != NULL)que.push(p->right);}}
0 0
- 二叉树的遍历_C++实现
- 数据结构_树_二叉树的建立、遍历、复制与移除_二叉链表存储_C++实现
- 数据结构_求二叉树的高度以及层次遍历二叉树算法_C语言源代码
- 二叉树遍历的实现
- 二叉树的遍历实现
- 二叉树_C语言实现(上)
- 二叉树_C语言实现(下)
- 二叉树的实现和二叉数的遍历实现
- 二叉搜索树_c++
- 二叉树遍历 实现
- 树的遍历、平衡二叉树实现
- 树的遍历及二叉树实现
- 数据结构_树_二叉树的线索化_C++实现
- 数据库中实现二叉树的遍历
- C#中实现二叉树的遍历
- 遍历二叉树的各种实现
- 二叉树的实现和遍历
- 非递归实现二叉树的遍历
- Java数组判等
- Codeforces Round #265 (Div. 2)
- hdu3436 splay
- 如何终止java线程
- SecureCRT的几项设置
- 二叉树的遍历_C++实现
- XML
- PAT 1087. All Roads Lead to Rome (30)
- android:shape 属性
- javaweb之Filter详解
- WWDC 2012 Session笔记——202, 228, 232 AutoLayout(自动布局)入门
- 宏操作
- 【COGS】421 [SDOI2009] HH的项链 树状数组
- inux设备驱动中的并发控制