.已知一颗二叉树的前序遍历为abdheicfgj,中序遍历为hdbeiafcgj,求出该二叉树的后序遍历结果,并画图

作者&投稿:底俘 (若有异议请与网页底部的电邮联系)
.已知一颗二叉树的前序遍历为abdheicfgj,中序遍历为hdbeiafcgj,求出该二叉树的后序遍历结果,并画图~

根据前序遍历序列abdheicfgj,得知a是根节点.根据中序遍历序列hdbeiafcgj,得知hdbei是根节点a的左子树,fcgj是根节点a的右子树,画出二叉树: a / \ b c / \ / \ d e f g / \ \ h i j后序遍历序列是 h d i e b f j g c a#include "stdio.h"#include "stdlib.h"struct tree{ char data; struct tree *left; struct tree *right;};typedef struct tree treenode;typedef treenode *btree;btree createbtree(char *data,int pos,int maxPos) //递归创建法{ btree newnode; if(data[pos]==0 || pos>maxPos) { return NULL; } else { newnode=(btree)malloc(sizeof(treenode)); newnode->data=data[pos]; newnode->left=createbtree(data,2*pos,maxPos); newnode->right=createbtree(data,2*pos+1,maxPos); return newnode; }}void inorder(btree ptr){ if(ptr!=NULL) { inorder(ptr->left); printf("%C ",ptr->data); inorder(ptr->right); }}void preorder(btree ptr){ if(ptr!=NULL) { printf("%C ",ptr->data); preorder(ptr->left); preorder(ptr->right); }}void postorder(btree ptr){ if(ptr!=NULL) { postorder(ptr->left); postorder(ptr->right); printf("%C ",ptr->data); }}int main(){ btree root=NULL; int i; char data[16]={0,'a','b','c','d','e','f','g','h',0,0,'i',0,0,0,'j'}; root=createbtree(data,1,15); printf("二叉树的顺序存储内容: "); for(i=1;i<16;i++) { if(data[i]==0) { printf("^ "); } else { printf("%c ",data[i]); } } printf("
前序遍历序列: "); preorder(root); printf("
中序遍历序列: "); inorder(root); printf("
后序遍历序列: "); postorder(root); printf("
");return 0;}

前序遍历结果为ABCDEF,
中序遍历结果为BAEDFC

则根为A, A有左右孩子,分别是,左孩子是B,右孩子是EDFC,依此类推...
还原二叉树如下:
A
B C
D
E F

前序先访问根节点,因此A是根节点,中序先访问左子树,再访问根,再访问右子树,因为已经确认A为根,所以,从中序可知,DBGE为左子树,A为根,CHF为右子树。然后对左、右子树分别处理。结果为DGEBHFCA


a
b c
d e f g
h l j

后序遍历是 左右根吧 ? 如果是,hdlebfjgca


已知一颗二叉树的前序遍历的结果序列是abdgcehif,中序遍历结果是gdbahe...
根据前序遍历和中序遍历,可以得到该二叉树为 所以后序遍历为gdbhiefca。这是我得出的结果,应该没错吧。

已知一棵二叉树的前序遍历和后序遍历,可以构造出一棵二叉树吗?
普通二叉树必须是这三者之一:前序和中序、后序和中序、层次序和中序才能还原出二叉树

已知一棵二叉树的先序遍历序列为ABCDEFGHIJ,中序遍历序列为CBDEAFHIGJ...
先看先序,其第一个为树的根,先序遍历是先根再左子树最后右子树,第一个肯定是树的根,先画A,A再中序遍历中左右都有,说明A有左子树也有右子树。A \/ \\ 然后看先序第一个值是B,在中序中为A的前面,所以B是A的左子树 A \/ \\ B 继续看先序,接下来是C、D,C再中序中再B的...

设某二叉树的前序和中序序列均为CBDEAF,则它的后序序列是???_百度知...
答案是:FAEDBC 看看下面的过程就懂了。已知后序中序求先序类似 已知一棵二叉树的前序序列和中序序列,构造该二叉树的过程如下:1. 根据前序序列的第一个元素建立根结点;2. 在中序序列中找到该元素,确定根结点的左右子树的中序序列;3. 在前序序列中确定左右子树的前序序列;4. 由左子树的前...

已知一棵二叉树的先序遍历序列为: A B C D E F G H I,中序遍历序列为...
回答:A \/ \\ B D \\ \/ \\ C E F \/ \\ G I \\ H

已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉...
已知一棵二叉树前序遍和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历是DGEBHFCA。前序遍历的第一个节点为根节点,由前序遍历可知,A为根节点。中序遍历的根节点前面的节点均为左子树的节点,所以左子树上的节点为DBGE。去掉根节点和左子树节点,右子数节点为CHF。前序遍历的第二个节点...

已知一棵二叉树的前序序列为A B D G C E H I F;中序序列为:D G B A...
二叉树的后序为G、D、B、I、H、E、F、C、A。由前前序第一个为A,所以根节点,所以A的左子树为D、G、B,右子树为E、I、H、C、F。第二个根节点为B,又由中序的出B的左子树为D、G,然后得出D的右子树为G,C为A的右子树,依次进行判断,最后的出二叉树的序列。二叉树图,如下图:...

已知一个二叉树的先序遍历结果是:a b d e g c f h,中序遍历的结果是:d...
E D F C B I G H A

已知某二叉树的前序是abdgcefh,中序dgbaechf,则后序是?
首先我们知道,前序遍历的规则是:根结点→左子结点→右子结点 中序遍历是:左子结点→根结点→右子结点 后序遍历是:左子结点→右子结点→根结点 那么,对于一棵二叉树,前序遍历的第一个结点一定是这棵树的根结点,即根结点是a。在中序遍历的顺序dgbaechf中,以a分成左、右两边,左边是dgb,...

已知一棵二叉树的先序序列为ABCDEFGHIJ,中序序列为BCDAFEHJIG_百度知...
第一层 a 第二层 b***e 第三层 c***d***f 第四层 g a是根 b是a的左孩子,e是a的右孩子 c是b的左孩子,d是b的右孩子 f是e的右孩子,g是f的左孩子 一楼的我不明白你的意思,我怎么感觉你回答的不是楼主的问题呢?提问题的和回答问题的都是学计算机的吗,呵呵,交个朋友吧 ...

安多县14767011527: 已知一棵二叉树的先序遍历序列为ABDGHCEIF,它的中序遍历序列是BGDHAEICF,请给出其层次遍历序列. -
芒孟锯叶: 根据先序遍历和中序遍历,我们可以将这颗二叉树画出来,如下图.所以,根据图片,得出层次遍历序列为:ABCDEFGHI.

安多县14767011527: 数据结构 已知一棵二叉树的前序遍历的结果序列是ABCDEFGHIJ,中序遍历的结果是 -
芒孟锯叶: 如果仅有“已知一棵二叉树的前序遍历的结果序列是ABCDEFGHIJ”,则中序遍历的结果是不能确定的.

安多县14767011527: .已知一颗二叉树的前序遍历为abdheicfgj,中序遍历为hdbeiafcgj,求出该二叉树的后序遍历结果,并画图 -
芒孟锯叶: ab cd e f g h l j后序遍历是 左右根吧 ? 如果是,hdlebfjgca

安多县14767011527: 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历是什么? -
芒孟锯叶: 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历是DGEBHFCA. 前序遍历的第一个节点为根节点,由前序遍历可知,A为根节点.中序遍历的根节点前面的节点均为左子树的节点,所以左子树上...

安多县14767011527: 一棵二叉树的前序遍历序列为abdec,二叉树的根为什么? 答案和原因,谢谢 -
芒孟锯叶: 根是a.因为二叉树前序遍历按 根左右的顺序,所以a就是二叉树的根节点.

安多县14767011527: 已知某二叉树的前序是abdgcefh,中序dgbaechf,则后序是? -
芒孟锯叶: 首先我们知道,前序遍历的规则是:根结点→左子结点→右子结点 中序遍历是:左子结点→根结点→右子结点 后序遍历是:左子结点→右子结点→根结点 那么,对于一棵二叉树,前序遍历的第一个结点一定是这棵树的根结点,即根结点是a. ...

安多县14767011527: 某二叉树的先序遍历序列是abdgcefh,中序遍历序列是dgbaechf,画出二叉树 并给出其后序遍历序列 最好解释 -
芒孟锯叶: 分析过程: 以下面的例题为例进行讲解: 已知一棵二叉树的先序遍历序列和中序遍历序列分别是abdgcefh、dgbaechf,求二叉树及后序遍历序列. 分析:先序遍历序列的第一个字符为根结点.对于中序遍历,根结点在中序遍历序列的中间,左...

安多县14767011527: 一个数据结构二叉树的问题:已知一个二叉树的先序遍历为ABDFGEHC,中序遍历为FDGBEHAC, -
芒孟锯叶: A/,D是根先序遍历为ABDFGEHC A是根中序遍历为FDGBEHAC 可知A的左子树是FDGBEH 右叶结点C F是 叶结点 后序遍历为 FGDHEBCA 结合上面FGDHEB中B是根;D E/ \B C/ \,可知FDG就B的左子树 EH是右子树 后序中有FGD,所以,E是根 结果为, G是右叶 后序中的HE说明H是叶,F是左叶,再看中序FDGBEH(找B的左右); \ \

安多县14767011527: 已知一颗二叉树的先序遍历序列为:ABDCEF,中遍历为:BDAECF,请画出这颗二叉树,并给出其后序遍历序列 -
芒孟锯叶: A->Lchild=D,A->Rchild=C,D->lchild=B,C->lchild=E,C->rchild=F 后序遍历:BDEFCA

安多县14767011527: 已知一棵(完全二叉树)的前序遍历序列,编程求出这棵(完全二叉树) -
芒孟锯叶: 完全二叉树,那是有可能唯一建立的.可能不用递归的,而是用“树”的数据结构来实现.“树”结构需要的数据成员有:父结点指针、左孩子指针、右孩子指针.需要的函数成员有:建立一个空的节点、建立一个树、销毁一个树、插入左孩子、插入右孩子、设置父节点(上一级节点).具体的做法是:先根据总的节点个数,确定树的层数,建立一个不含任何有效数据的空树,只是结构是正确的.然后,根据前序遍历序列,一个一个的把前序遍历序列赋予目标树中对应的位置上.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网