<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
include "stdio.h"#include "stdlib.h"#include "conio.h"#include "string.h"#define MAX 20/************************************** 定义树的结构体***************************************/typedef struct tagtree{ char data; /*数据域*/ int flag; /*非递归操作时用来做标志*/ struct tagtree*lchild; /*指向左孩子的指针域*/ struct tagtree*rchild; /*指向右孩子的指针域*/}tree;/******************************************** 用括号表示法输出树**********************************************/void OutTree(tree *root){ if(root != NULL) { printf("%c",root->data); /*先输出根结点*/ if(root->lchild != NULL || root->rchild != NULL) { printf("("); OutTree(root->lchild); /*处理左子树*/ if(root->rchild != NULL) { printf(","); } OutTree(root->rchild); /*处理右子树*/ printf(")");}}}/************************************************ 用树形表示法输出树*************************************************/void DispTree(tree *root,int x,int y,int n) /*n用来控制第一层树的高度*/{ int i=0; if(root !=NULL) { gotoxy(x,y); /*到相应结点输出*/ printf("%c",root->data); if(root->lchild != NULL) /*处理左子树,这里只有第一次N为可变的,*/ { i=1; /*为的是能够输出整棵树,而不会被覆盖,*/ while(ilchild,x-n,y+n,2); /*递归处理左子树*/ } if(root->rchild != NULL) { i=1; while(irchild,x+n,y+n,2); /*递归处理右子树*/ } }}/**************************************** 根据前缀和中缀表达式构造二叉树*****************************************/tree* PreCreateTree(char*pre,char *mid,int n){ tree*root = NULL; int i=0; if(n==0) return NULL; root=(tree*)malloc(sizeof(tree)); while(i<n root-=""></n>data=pre[0]; root->lchild=PreCreateTree(pre+1,mid,i); root->rchild=PreCreateTree(pre+i+1,mid+i+1,n-i-1); return root;}/**************************************** 根据后缀和中缀表达式构造二叉树*****************************************/tree*PostCreateTree(char *post,char *mid,int n){ tree*root=NULL; int lp=0; if(n==0) return NULL; while(lp<n root-="" root="(tree*)malloc(sizeof(tree));"></n>data = post[n-1]; /*printf("\n%c",root->data); getch();*/ root->lchild = PostCreateTree(post,mid,lp); root->rchild = PostCreateTree(post+lp,mid+lp+1,n-lp-1); return root;}void main(){ tree *root; char pre[20],mid[20]; printf("Input the pre string:"); gets(pre); printf("\nInput the mid string:"); gets(mid); root=PreCreateTree(pre,mid,strlen(mid)); printf("\nthe result is:"); DispTree(root,10,10,5); getch();}
分享到:
相关推荐
C#项目 ZTree构造树,源码实例说明,并附文档截图说明如何构造树。 setting = { treeId: "id", check: { enable: false }, data: { simpleData: { enable: true, idKey: "id", pIdKey: "pId", rootPId: 0...
根据树的先序和中序构造树并后序输出树,求树的深度以及判断是否为平衡树。
这是一个非常经典的树形结构。功能强大,易于理解,代码量很小,但是需要一点积分。内有详细说明
该文主要讨论如何应用C4.5 算法构造客户CRM等级分类决策树及其在 中的应用。
NULL 博文链接:https://lipbb.iteye.com/blog/1914043
从最小生成树的定义可知,构造有n个结点的无向连通带权图的最小生成树,必须满足以下三条: (1)构造的最小生成树必须包括n个结点; (2)构造的最小生成树中有且只有n-1条边; (3)构造的最小生成树中不存在回路。...
将一个数组的各个元素构造为二叉树,其中涉及到求叶子节点的函数,深度函数
用C++编写的一个建立邻接树的例子,可以计算两点间的距离 使用了map 和 vector
根据树的前序遍历和中序遍历构造树并输出后序遍历代码如下: <?php class BinaryTreeNode{ public $m_value; public $m_left; public $m_right; } function ConstructCore($preorder,$inorder){ if(count($...
数据结构实验代码
//(单节点树)构造方法 public TreeLinkedList() { this(null, null, null, null); } //构造方法 public TreeLinkedList(Object e, TreeLinkedList p, TreeLinkedList c, TreeLinkedList s) { element = e; ...
构造哈夫曼树,并生成编码 构造哈夫曼树,并生成编码
分析数据: 可以使用任何方法,构造树完成之后,我们可以将树画出来。 训练算法: 构造树结构 测试算法: 使用习得的决策树执行分类 使用算法: 此步骤可以适用于任何监督学习任务,而使用决策树可以更好地理解数据的...
讲解构造哈夫曼树的过程,超详细。 对于不理解哈夫曼树的过程构造的新人来讲,十分有用!
利用最小堆编程实现给定权值集合下构造相应霍夫曼树的算法,并解决以下问题: 有一电文共使用五种字符a,b,c,d,e,其出现频率依次为4,7,5,2,9。 (1)构造对应的编码哈夫曼树(要求左子树根结点的权小于等于右子树根结点...
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
面试准备 公司目前正在做什么,或者他们目前... 如何从给定的数组构造树: 图/树(问题的46%,最常见) 数组/字符串(38%) 链表(10%) 搜索/排序(2%) 堆栈/队列(2%) 哈希表(占问题的2%,最不常见)
用java语言来构造二叉排序树,理解java数据结构。
通过对js构造菜单树的思路分析,写出java的菜单树构造的工具类,可以生成你想要的菜单树!! 仅供学习!