请高手们帮个忙,怎么创建一课普通的树? 具体是:比如现在有一个字符数组:char[] c1={'a','b','c','d','e','f'};将这个数组中的元素当做节点,创建出一棵树,怎么实现?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include "stdafx.h"#include <malloc.h>//二叉树结构体struct BTNode{ char data; BTNode *rchild; BTNode *lchild;};char PreNode[8] ={'A','B','D','F','E','G','H','C'};char MidNode[8] ={'D','F','B','G','E','H','A','C'};/* 二叉树创建函数dCreateBranchTree3()<非递归算法> 已知二叉树的前,中序遍历序列串,构造对应的二叉树 <编程思想>: 首先,在前序遍历序列中的首元素是二叉树的根节点,接着 ,在中序遍历序列中找到此节点,那么在此节点以前的节点必为 其左孩子节点,以后的必为其右孩子节点; 然后,在中序遍历序列中,根节点的左子树和右子树再分别 对应子树前序遍历序列的首字符确定子树的根节点,再由中序 遍历序列中根节点的位置分别确定构成它们的左子树和右子树 的节点; 依次类推,确定二叉树的全部节点,构造出二叉树. 参数描述: char *pre: 前序遍历序列 char *mid: 中序遍历序列 int n: 遍历序列中节点个数 返回值: dCreateBranchTree3 = 新建二叉树的根节点指针*/BTNode *dCreateBranchTree3(char *pre,char *mid,int n){ BTNode *p; char *t; int left; if(n<=0) return(NULL); p = (BTNode *)malloc(sizeof(BTNode)); p->data = *pre; for(t=mid;t<mid+n;t++) if(*t==*pre) break; /*在中序遍历序列中查找根节点*/ left = t - mid; /*左子树的节点个数*/ p->lchild = dCreateBranchTree3(pre+1,mid,left); p->rchild = dCreateBranchTree3(pre+1+left,t+1,n-1-left); return(p);}int _tmain(int argc, _TCHAR* argv[]){ BTNode *pTree = dCreateBranchTree3(PreNode, MidNode, 8); _getch(); return 0;} 用ztree吧 那个很好用 是jquery的 jar包处于有韩文的路径下时无法运行 请帮我看一段代码 百思不解 [请教]我的JNI库调用,package包找不到路径 怎么判断一个线程是否运行完毕? 正则表达式的问题.想判断,一字符串内,是否有#和,以外的字符,如何写正则表达式 组合初始化 请问:一个从线程中返回结果的问题,帮忙了。想了很长时间没有想通。(在线等) 【菜鸟疑问】关于JAVA的两个IDE的问题 今天顺利通过SCJP考试,高兴!!散分了!!来者有分!!数量有限要快哦! 請分析NullPointerException的產生原因?(付程序) 服务器端与服务器端对象流传输问题? 正则,快来看看啊 有分
#include <malloc.h>//二叉树结构体
struct BTNode
{
char data;
BTNode *rchild;
BTNode *lchild;
};
char PreNode[8] ={'A','B','D','F','E','G','H','C'};
char MidNode[8] ={'D','F','B','G','E','H','A','C'};
/*
二叉树创建函数dCreateBranchTree3()<非递归算法>
已知二叉树的前,中序遍历序列串,构造对应的二叉树
<编程思想>:
首先,在前序遍历序列中的首元素是二叉树的根节点,接着
,在中序遍历序列中找到此节点,那么在此节点以前的节点必为
其左孩子节点,以后的必为其右孩子节点;
然后,在中序遍历序列中,根节点的左子树和右子树再分别
对应子树前序遍历序列的首字符确定子树的根节点,再由中序
遍历序列中根节点的位置分别确定构成它们的左子树和右子树
的节点;
依次类推,确定二叉树的全部节点,构造出二叉树.
参数描述:
char *pre: 前序遍历序列
char *mid: 中序遍历序列
int n: 遍历序列中节点个数
返回值:
dCreateBranchTree3 = 新建二叉树的根节点指针
*/
BTNode *dCreateBranchTree3(char *pre,char *mid,int n)
{
BTNode *p;
char *t;
int left;
if(n<=0)
return(NULL);
p = (BTNode *)malloc(sizeof(BTNode));
p->data = *pre;
for(t=mid;t<mid+n;t++)
if(*t==*pre) break; /*在中序遍历序列中查找根节点*/
left = t - mid; /*左子树的节点个数*/
p->lchild = dCreateBranchTree3(pre+1,mid,left);
p->rchild = dCreateBranchTree3(pre+1+left,t+1,n-1-left);
return(p);
}
int _tmain(int argc, _TCHAR* argv[])
{
BTNode *pTree = dCreateBranchTree3(PreNode, MidNode, 8);
_getch();
return 0;
}