初学二叉树
来源:互联网 发布:股市大数据分析工具 编辑:程序博客网 时间:2024/05/21 06:50
两个版本的由二叉树中序和前序推后序的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 80
typedef struct tnode{
char item;
struct tnode *left;
struct tnode *right;
}TNODE;
TNODE *add_tree(TNODE *root,char inOrder[],char preOrder[]){
int i,j;
char inOrder_left[N];
char inOrder_right[N];
char preOrder_left[N];
char preOrder_right[N];
if(!strlen(inOrder) || !strlen(preOrder)){
root = NULL;
}
else{
root = (TNODE*)malloc(sizeof(TNODE));
root->item = preOrder[0];
for(j=0;inOrder[j] != root->item;j++);
for(i=0;i<j;i++){
inOrder_left[i] = inOrder[i];
}
inOrder_left[i] = '\0';
for(i=j+1;inOrder[i];i++){
inOrder_right[i-j-1] = inOrder[i];
}
inOrder_right[i-j-1] = '\0';
for(i=1;i<=j;i++){
preOrder_left[i-1] = preOrder[i];
}
preOrder_left[i-1] = '\0';
for(i=j+1;preOrder[i];i++){
preOrder_right[i-j-1] = preOrder[i];
}
preOrder_right[i-j-1] = '\0';
root->left = add_tree(root->left,inOrder_left,preOrder_left);
root->right = add_tree(root->right,inOrder_right,preOrder_right);
}
return root;
}
void print(TNODE *root){
if(root){
print(root->left);
print(root->right);
printf("%c", root->item);
}
}
int main(){
char preOrder[] = "-+a*b%cd/ef";
char inOrder[] ="a+b*c%d-e/f";
TNODE *root;
root = add_tree(root,inOrder,preOrder);
print(root);
getchar();
return 0;
}
#include <stdio.h>
#include <string.h>
#define size 100
char inorder[size] = "a+b*c^b-e/f";
char postorder[size] = "abcd^*+ef/-";
int find(char c)
{
int i;
for (i = 0; inorder[i] != c; i++);
return i;
}
void preorder(int in_low, int in_high, int post_low, int post_high)
{
#define left_num (findi - in_low)
#define right_num (in_high - findi)
int findi;
if (post_low > post_high) {
return;
}
else {
putchar(postorder[post_high]);
findi = find(postorder[post_high]);
preorder(in_low, findi - 1, post_low, post_low + left_num - 1);
preorder(findi + 1, in_high, post_high - right_num, post_high - 1);
}
}
int main()
{
int N;
N = strlen(inorder);
preorder(0, N - 1, 0, N - 1);
getchar();
return 0;
}
- 初学二叉树
- 二叉树初学
- 初学二叉树
- 初学数据结构之二叉树
- 二叉树的遍历初学
- 初学数据结构---树和二叉树
- 初学数据结构---二叉树层次遍历
- 小白初学二叉树遍历
- 初学数据结构---二叉树,线索二叉树相关算法
- 初学数据结构自己写的二叉树,方便以后看
- 初学数据结构---判断是否为满二叉树
- 初学菜鸟的学习日记——二叉树(JAVA)
- 二叉树、二叉堆
- 线段树初学
- AVL树初学笔记
- 初学字典树
- 主席树 初学
- 初学最小生成树
- [第二类斯特林数 组合计数] 省选模拟赛 2 B. 两弹一星 missile
- 门面模式
- weblogic 和 tomcat 的区别利弊,摘自网友
- 如何用AltiumDesigner绘制STC89C51单片机原理图
- 安装office的ISO版本,虚拟光驱
- 初学二叉树
- 文章标题
- shell脚本之for语句
- Apache Cordova 安卓android上传图片或者文件 调用后台服务实现java代码 ft.upload(imageURI, uri, that.uploadSuccess, that.
- CCF 201409-1
- dagger2使用详解
- 安装tokudb报错
- 指针总结
- 新特性:Andorid-foreground 解析