社区
数据结构与算法
帖子详情
我知道有了一个二叉树先序和中序遍历可以唯一确定一颗二叉树但是.....
drmao
2003-11-01 09:34:03
但是要怎么做才能生成它呢,
比如先序为Pre[n] 中序为Pre[n]
CreatBiTreeFromPreAndIn(,,,,)有谁知道怎么编写呢?
...全文
791
8
打赏
收藏
我知道有了一个二叉树先序和中序遍历可以唯一确定一颗二叉树但是.....
但是要怎么做才能生成它呢, 比如先序为Pre[n] 中序为Pre[n] CreatBiTreeFromPreAndIn(,,,,)有谁知道怎么编写呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CD2006
2003-11-14
打赏
举报
回复
#include "iostream"
#include "string.h"
using namespace std;
typedef struct BiTree
{
char data;
struct BiTree * lc,* rc;
} BiTree;
const int
StrMax=100;
char * Pre,* In;
void Init(char * Pre,char * In)
{
cout<<"Enter tree's PreOrder: ";
cin>>Pre;
cout<<"Enter tree's InOrder: ";
cin>>In;
}
void create(BiTree * & cur,int left,int right,int & pos)
{
int i;
for(i=left;In[i]!=Pre[pos];i++); //Find out current subtree's root
cur=new BiTree; //Create root
cur->data=Pre[pos];
cur->lc=cur->rc=0;
if(left<=i-1) //Create root's left subtree
{
pos++;
create(cur->lc,left,i-1,pos);
}
if(i+1<=right) //Create root's right subtree
{
pos++;
create(cur->rc,i+1,right,pos);
}
}
void PostOrderPrint(BiTree * cur)
{
if(cur)
{
PostOrderPrint(cur->lc);
PostOrderPrint(cur->rc);
cout<<cur->data<<" ";
}
}
void main(void)
{
BiTree * Tree;
int pos;
void Init(char * Pre,char * In);
void create(BiTree * & cur,int left,int right,int & pos);
void PostOrderPrint(BiTree * cur);
Pre=new char[StrMax];
In=new char[StrMax];
Init(Pre,In);
pos=0;
create(Tree,0,strlen(In)-1,pos);
cout<<"PostOrderTraverse: ";
PostOrderPrint(Tree);
cout<<endl;
}
Riemann
2003-11-09
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2059/2059607.xml?temp=.1657221上有。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100
typedef struct node
{
char info;
struct node *llink,*rlink;
}TNODE;
char pred[MAX],inod[MAX];
TNODE *restore(char *,char *,int);
void postorder(TNODE *);
main(int argc,char * *argv)
{
TNODE *root;
if(argc<3)
exit(0);
strcpy(pred,argv[1]);
strcpy(inod,argv[2]);
root=restore(pred,inod,strlen(pred));
postorder(roor);
printf("\n\n");
}
TNODE *restore(char *ppos,char *ipos,int n)
{
TNODE *ptr;
char *rpos;
int k;
if(n<=0)
return NULL;
ptr=(TNODE*)malloc(sizeof(TNODE));
ptr->info=*ppos;
for(rpos=inpos;rpos<ipos+n;rpos++)
if(*rpos==*ppos)
break;
k=rpos-ipos;
ptr->llink=restore(ppos+1,ipos,k);
ptr->rlink=restore(ppos+1+k,rpos+1,n-1-k);
return ptr;
}
void postorder(TNODE *ptr)
{
if(ptr==NULL)return;
postorder(ptr->llink);
postorder(ptr->rlink);
printf("%c",ptr->info);
}
drmao
2003-11-02
打赏
举报
回复
太谢谢大家了,我在努力中。
LeeMaRS
2003-11-02
打赏
举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=699
看这里, FAQ里面就有了.
CD2006
2003-11-02
打赏
举报
回复
不好意思中午没睡觉,错话连篇:
重来:
a
/ \
b c
/ \ /
e f g
\
h
PreOrderTraverse: abefcgh
InOrderTraverse: ebfaghc
Algorithm:
在前序遍历中,第一个节点a为树根,则在中序中找到a,将中序序列一分为二,
ebf,cgh , ebf显然为左子树的前序遍历,cgh为右子树的前序遍历,
所以在前序序列中可立刻判断bef,ghc分别为左子树和右子树的前序遍历.
设左子树为tree1,右子树为tree2,
问题化归为:已知tree1,tree2的前序,中序遍历,生成tree1,tree2.
对tree1,tree2分别递归调用算法.
CD2006
2003-11-02
打赏
举报
回复
I'm sorry.
I have made a mistake!
InOrderTraverse :ebfaghc
CD2006
2003-11-02
打赏
举报
回复
a
/ \
b c
/ \ /
e f g
\
h
PreOrderTraverse: abefcgh
InOrderTraverse: ebfacgh
Algorithm:
在前序遍历中,第一个节点a为树根,则在中序中找到a,将中序序列一分为二,
ebf,cgh ebf显然为左子树,cgh为右子树,
所以在前序序列中可立刻判断bef,cgh分别为左子树的前序遍历和后序遍历.
设左子树为tree1,右子树为tree2,
问题化归为:已知tree1,tree2的前序,中序遍历,生成tree1,tree2.
对tree1,tree2分别递归调用算法.
dengsf
2003-11-01
打赏
举报
回复
先序序列 的第一个点是树的 根。
在 中序序列 找到这个点,将该点前后的部分分为两段,左边是 左子树 的中序序列,右边是右子树的中序序列。
在 先序序列 里也从左到右分出“相同数目”的两个序列,它们分别是 左右子树 的先序序列。
……
递归思想如上。
Python实现输入
二叉树
的
先序
和
中序遍历
,再输出后序遍历操作示例
输入:
一颗
二叉树
的
先序
和
中序遍历
输出:后续遍历 思想:
先序
遍历中,第
一个
元素是树根 在
中序遍历
中找到树根,左边的是左子树 右边的是右子树 Python代码: # -*- coding:utf-8 -*- def fromFMtoL( mid ): ...
建立
二叉树
,并输出
二叉树
的
先序
,中序和后序遍历序列,以及
二叉树
的叶子数
[问题描述] 建立
二叉树
,并输出
二叉树
的
先序
,中序和后序遍历序列,以及
二叉树
的叶子数。 [基本要求] 要求根据读取的元素建立
二叉树
,能输出各种遍历。 [实现提示] 可通过输入带空格的前序序列建立二叉链表。
由
先序
遍历和
中序遍历
确定
二叉树
的存储结构
首先提示用户收入
一颗
二叉树
的前序遍历和
中序遍历
,然后回车, 即可得到完整的前序和中序以及后序遍历序列, 并且打印出
二叉树
翻转90°后的形状。 注意:编译PreIn.cpp文件时如果有连接错误,则需要按快捷键Alt...
数据结构层序
中序遍历
构建
二叉树
通过本文提供的代码示例,我们可以看到如何利用
中序遍历
和层序遍历序列构建
一颗
二叉树
的过程。这种构建方式不仅有助于理解
二叉树
的性质和遍历方法,而且在实际应用中也非常有用,例如在算法设计和编程竞赛中经常会...
二叉搜索树(排序
二叉树
),树的遍历(前序、中序、后序)【数据结构和算法入门7】
二叉搜索树(排序
二叉树
),树的遍历(前序、中序、后序)【数据结构和算法入门7】
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章