由二叉树的先序和后续遍历序列()唯一确定这棵二叉树。
A.一定能
B.一定不能
C.不确定
D.有可能
- · 有4位网友选择 A,占比40%
- · 有2位网友选择 B,占比20%
- · 有2位网友选择 D,占比20%
- · 有2位网友选择 C,占比20%
A.一定能
B.一定不能
C.不确定
D.有可能
程序填空。 若已知一棵二叉树的先序和中序,可唯一确定这棵树。以下按照该法创建一棵二叉树,接着按中序遍历。 #include <stdio.h> #include <stdlib.h> typedef char ElemType; //定义结点数据为int型 typedef int Status; //定义函数类型为int型 #define ERROR 0 #define OK 1 struct BiTNode{ //定义结构体 ElemType data; //结点数值 struct BiTNode *lchild; //左孩子指针 struct BiTNode *rchild; //右孩子指针 }; BiTNode *BiTree,*s; // 两个全局指针变量 ElemType x[4]={'A','B','C','D'}; //该树的先序序列 ElemType z[4]={'C','B','A','D'}; //该树的中序序列 void CreateBiTree(BiTNode *root,ElemType y) //功能:将y插入到root所指向的树 { int k=0; if(root==NULL) //若root为空,即root指向空树,(*s)成为该树的根节点 {root=s;s->data=y;s->lchild=NULL;s->rchild=NULL;} //填充(*s) else //若非空 { while(_________________) //5分 k++; //在中序列找到等于当前插入元素y或者等于当 // 前根元素(root->data)的结点为止 if(z[k]==y) //若找到的结点等于当前插入元素y,说明y在根元 { //素(root->data)左边,代表y在根元素的左子树 CreateBiTree(root->lchild,y); //将y插入当前root的左子树 __________=BiTree; //配合BiTree=root; 使全局变量BiTree逐渐回归 } //到最大树的根节点,以便插入下一个结点时始终从最大树根节点出发 //同时使结点(*s)获得父亲 3分 else // 若找到的结点等于当前根元素(root->data),说明 { //y在当前根元素的右边,代表y在当前根元素的右子树 CreateBiTree(root->rchild,y); //将y插入当前root的右子树 ___________=BiTree; //配合BiTree=root; 使全局..........(同上) } } BiTree=root; //和上面配合,使全局变量BiTree逐渐回归到最大树的根节点。 //目前,BiTree、root、s三者相同,但结点(*s)还没有父亲 } void MidOrder(BiTNode *root) //中序遍历方法 { if(!(root->lchild==NULL)) MidOrder(root->lchild); printf("%c",root->data); if(!(root->rchild==NULL)) MidOrder(root->rchild); } main() { int i; BiTree=NULL; for(i=0;i<4;i++) if(s="(BiTNode*)malloc(sizeof(BiTNode)))" { createbitree(bitree,x[i]); 按照先序序列逐个插入,所有结点插入完毕后 树就建成了 } midorder(bitree);>
A、所有的结点均无左孩子
B、所有的结点均无右孩子
C、只有一个叶子结点
D、是一棵满二叉树
A、A是根结点
B、B和D结点在同一层
C、D是A的左孩子
D、D是E的双亲结点
A、GCABFED
B、GCFABED
C、GCABEDF
D、GCABEFD
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!