二叉树遍历(九度题)
来源:互联网 发布:young网络客户端下载 编辑:程序博客网 时间:2024/05/19 07:07
(1)
- 题目描述:
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
- 输入:
输入包括1行字符串,长度不超过100。
- 输出:
可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。(2)代码实现
#include <stdio.h>#include <string.h>#include <iostream> using namespace std; typedef struct Node{ char value; Node* left; Node* right;}Node; typedef struct BinaryTree{ Node* root;}BinaryTree; void InitBinaryTree(BinaryTree* bt, char rootValue){ Node* root = new Node(); root->left = NULL; root->right = NULL; root->value = rootValue; bt->root = root;} void InsertLeftTree(Node* n, char value[], int& pos);void InsertRightTree(Node* n, char value[], int& pos); void InsertTreeNode(BinaryTree* t, char value[], int size){ Node* temp = t->root; int pos = 0; if((++pos)<strlen(value)) InsertLeftTree(t->root, value, pos); if(++pos <strlen(value)) InsertRightTree(t->root, value, pos);} void InsertRightTree(Node* n, char value[], int& pos){ if(value[pos] == '#') return ; Node* node = new Node(); node->value = value[pos]; node->left = NULL; node->right = NULL; n->right = node; if((++pos)<strlen(value)) InsertLeftTree(node, value, pos); if(++pos <strlen(value)) InsertRightTree(node, value, pos);} void InsertLeftTree(Node* n, char value[], int& pos){ if(value[pos] == '#') return ; Node* node = new Node(); node->value = value[pos]; node->left = NULL; node->right = NULL; n->left = node; if((++pos)<strlen(value)) InsertLeftTree(node, value, pos); if(++pos <strlen(value)) InsertRightTree(node, value, pos);} void MidBrowse(Node* node){ if(node->left != NULL) MidBrowse(node->left); cout<<node->value<<" "; if(node->right!=NULL) MidBrowse(node->right);}int main(){ BinaryTree bt; char value[101]; memset(value, 0, sizeof(char)*101); while(cin.getline(value, 101)) { InitBinaryTree(&bt, value[0]); InsertTreeNode(&bt, value, strlen(value)); MidBrowse(bt.root); cout<<endl; }}
- 二叉树遍历(九度题)
- 二叉树的遍历(递归遍历)
- 二叉树遍历(遍历C#实现)
- 数据结构--二叉树--层次遍历二叉树(顺序遍历)
- 二叉树的遍历 (二叉树遍历转换)
- 二叉树遍历(树)
- 二叉树遍历(转)
- 二叉树(含先序中序后序遍历)
- 二叉树遍历(思想)
- 二叉树遍历(图解)
- 二叉树遍历(递归)
- 二叉树遍历(图解)
- 二叉树的遍历(层遍历和深度遍历)
- 二叉树遍历、分层遍历
- 遍历二叉树--二叉树
- 二叉树给出两种遍历序列(含中序遍历)创建一颗先序遍历二叉树
- 二叉树创建及遍历(递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 【struts2】struts2开发环境搭建模板
- 云计算岗位招聘要求
- 如何编辑SDE数据库(转载)
- string stringbuffer stringbuilder
- tomcat服务器内存溢出的处理办法
- 二叉树遍历(九度题)
- 短暂的沉寂
- usb 协议分析 -bus hound
- Java的运算符
- 将centos6.3 64位更换为redhat enterprise系统
- 删除Eclipse中保存的SVN账号和密码
- SqlServer2005 自动备份并存储另一电脑上的存储过程函数
- fork函数讲解
- 在eclipse中设计BPMN 2.0工作流定义的基本步骤