工学

单选题二叉树的先序遍历为EFHIGJK,中序遍历为HFIEJKG,则该二叉树根的右子树的根是()。A EB FC GD H

题目
单选题
二叉树的先序遍历为EFHIGJK,中序遍历为HFIEJKG,则该二叉树根的右子树的根是()。
A

E

B

F

C

G

D

H

参考答案和解析
正确答案: A
解析: 暂无解析
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

● 已知一个二叉树的先序遍历序列为①、②、③、④、⑤,中序遍历序列为②、①、④、③、⑤,则该二叉树的后序遍历序列为 (57) 。对于任意一棵二叉树,叙述错误的是 (58) 。

(57)A. ②、③、①、⑤、④

B. ①、②、③、④、⑤

C. ②、④、⑤、③、①

D. ④、⑤、③、②、①

(58)A. 由其后序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列

B. 由其先序遍历序列和后序遍历序列可以构造该二叉树的中序遍历序列

C. 由其层序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列

D. 由其层序遍历序列和中序遍历序列不能构造该二叉树的后序遍历序列


正确答案:C,B
试题(57)、(58)分析
  本题考查数据结构基础知识。
  遍历运算是二叉树的基本运算,主要有先序、中序、后序和层序遍历。
  先序遍历的基本方法:对于非空二叉树,先访问根结点,然后先序遍历根的左子树,最后先序遍历根的右子树。因此,若已知某二叉树的先序遍历序列,则可直接得到其树根结点。
  中序遍历的基本方法:对于非空二叉树,先中序遍历根的左子树,然后访问根结点,最后中序遍历根的右子树。因此,若已知某二叉树的根结点,则一可根据中序遍历序列将该二叉树左右子树上的结点划分开。
  后序遍历的基本方法:对于非空二叉树,首先后序遍历根的左子树,接着后序遍历根的右子树,最后访问根结点。因此,若已知某二叉树的后序遍历序列,则可直接得到其树根结点。
  题中给出的先序遍历序列为①、②、③、④、⑤,可知树根结点是①,据此再结合中序遍历序列②、①、④、③、⑤,可知②是根结点①左子树上的结点,由于是左子树上唯一的一个结点,因此②是根结点①的左孩子。对于右子树上的结点④、③、⑤,因右子树的先序遍历序列为③、④、⑤,因此③是根结点①的右孩子。依此类推,可知④是结点③的左孩子,⑤是结点③的右孩子。该二叉树如下图所示。

 
  从二叉树的遍历过程可知,从先序遍历序列和后序遍历序列中无法将左子树和右子树上的结点区分开,因此,由某棵二叉树的先序遍历序列和后序遍历序列不能构造出该二叉树的中序遍历序列。
  层序遍历二叉树的方法:设二叉树的根结点所在层数为1,则层序遍历二叉树的操作定义为从树的根结点出发,首先访问第一层的结点(根结点),然后从左到右依次访问第二层上的结点,接着是第三层上的结点,依此类推,自上而下、自左至右逐层访问树中各层上的结点。

 

第2题:

设某一二叉树先序遍历为abdec,中序遍历为dbeac,则该二叉树后序遍历的顺序是()。

A.abedc

B.abdec

C.debac

D.debca


参考答案:D

第3题:

● 某二叉树的先序遍历序列为 ABFCDE、中序遍历序列为 BFADCE,则该二叉树根的左孩子和右孩子结点分别是(38)。

(38)

A. B 和 F

B. F 和 B

C. B 和 C

D. C 和 B


正确答案:C


第4题:

已知某二叉树的先序遍历序列是 ABDCE,中序遍历序列是 BDAEC,则该二叉树为 (33) 。

A.A

B.B

C.C

D.D


正确答案:C
本题考查数据结构基础知识对二叉树进行先序遍历的过程是:若二叉树非空,则先访问根结点,然后先序遍历左子树,最后先序遍历右子树。因此,在二叉树的先序遍历序列中,第一个元素是根结点。对二叉树进行中序遍历的过程是:若二叉树非空,则首先中序遍历左子树,然后访问根结点,最后中序遍历右子树。因此,若在中序遍历序列中已找出二叉树的根结点,则根结点左边为左子树的中序遍历序列,右边是右子树的中序遍历序列。由此,根据先序序列确定根结点,根据中序序列划分左、右子树,反复应用此原则,就可根据先序遍历序列和中序遍历序列恢复二叉树的结构。本题中,先序序列为ABDCE,因此A是树根结点,中序序列为BDAEC,因此BD是左子树上的结点,EC是右子树上的结点。接下来根据先序遍历序列,可知B是左子树的根结点,C是右子树的根结点。在中序遍历序列BDAEC中,D在B之后,因此D是B的右孩子。同理,在中序遍历序列BDAEC中,E在C之前,因此E是C的左孩子。即该二叉树如下图所示。

第5题:

已知某二叉树的先序遍历序列是ABDCE,中序遍历序列是BDAEC,则该二叉树为______。

 


正确答案:C
解析:本题考查数据结构基础知识。
对二叉树进行先序遍历的过程是:若二叉树非空,则先访问根结点,然后先序遍历左子树,最后先序遍历右子树。因此,二叉树的先序遍历序列中,第一个元素是根结点。
  对二叉树进行中序遍历的过程是:若二叉树非空,则先中序遍历左子树,然后访问根结点,最后中序遍历右子树。因此,若在中序遍历序列中已找出二叉树的根结点,则根结点左边为左子树的中序遍历序列,右边是右子树的中序遍历序列。
  由此,根据先序序列确定根结点,根据中序序列划分左右子树,反复应用此原则,就可根据先序遍历序列和中序遍历序列恢复二叉树的结构。
  本题中,先序序列为ABDCE,因此A是树根结点,中序序列为BDAEC,因此BD是左子树上的结点,EC是右子树上的结点。根据先序遍历序列,可知B是左子树的根结点,C是右子树的根结点。在中序遍历序列BDAEC中,D在B之后,因此D是B的右孩子。同理,在中序遍历序列BDAEC中,E在C之前,因此E是C的左孩子。

第6题:

设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。


参考答案:若树为空,返回;若某结点为叶子结点,则仅输出该结点;否则先输出该结点,递归遍历其左子树,再输出该结点,递归遍历其右子树。
  [算法描述]
  void DoubleTraverse(BiTree T)
  {
  if(T == NULL)
  return;
  else if(T->lchild==NULL&&T->rchild==NULL)
  cout<data; //叶子结点输出
  else
  {
  cout<data;
  DoubleTraverse(T->lchild); //递归遍历左子树
  cout<data;
  DoubleTraverse(T->rchild); //递归遍历右子树
  }
  }

第7题:

某二叉树的先序遍历序列为ABFCDE、中序遍历序列为BFADCE,则该二叉树根的左孩子和右孩子结点分别是( )。

A.B和F

B.F和B

C.B和C

D.C和B


正确答案:C
解析:先序遍历的方式为:先访问根节点,然后先序遍历根的左子树,最后先序遍历根的右子树。因此,可以从先序遍历序列确定根节点。中序遍历的方式为:先中序遍历根的左子树,然后访问根节点,最后中序遍历右子树。因此,如果已知根节点,则可以根据中序遍历将左子树和右子树上的节点分开。本题中,由先序序列第1个节点为A,得知符号A为根节点,则由中序序列可知,B、F是左子树上的节点,c、D、E是右子树上的节点。依此类推,直到得到整棵树,最后可知,根的左右孩子分别为B和C。

第8题:

已知某二叉树的先序遍历序列是ABDCE,中序遍历序列是BDAEC,则该二叉树为______。

A.

B.

C.

D.


正确答案:C
解析:本题考查数据结构基础知识。
对二叉树进行先序遍历的过程是:若二叉树非空,则先访问根结点,然后先序遍历左子树,最后先序遍历右子树。因此,二叉树的先序遍历序列中,第一个元素是根结点。
  对二叉树进行中序遍历的过程是:若二叉树非空,则先中序遍历左子树,然后访问根结点,最后中序遍历右子树。因此,若在中序遍历序列中已找出二叉树的根结点,则根结点左边为左子树的中序遍历序列,右边是右子树的中序遍历序列。
  由此,根据先序序列确定根结点,根据中序序列划分左右子树,反复应用此原则,就可根据先序遍历序列和中序遍历序列恢复二叉树的结构。
  本题中,先序序列为ABDCE,因此A是树根结点,中序序列为BDAEC,因此BD是左子树上的结点,EC是右子树上的结点。根据先序遍历序列,可知B是左子树的根结点,C是右子树的根结点。在中序遍历序列BDAEC中,D在B之后,因此D是B的右孩子。同理,在中序遍历序列BDAEC中,E在C之前,因此E是C的左孩子。

第9题:

● 已知某二叉树的先序遍历序列是 ABDCE,中序遍历序列是 BDAEC,则该二叉树

为 (15) 。


正确答案:C

第10题:

已知一棵二叉树的后序遍历结果为DCEBIGHFA,中序遍历结果为CDBEAGIFH,则这棵二叉树的右子树的根为【 】。


正确答案:F
F

更多相关问题