以下存储结构中,不是树的存储结构是 。
A.双亲表示法
B.孩子兄弟链表
C.孩子链表存储结构
D.广义表
A.双亲表示法
B.孩子兄弟链表
C.孩子链表存储结构
D.广义表
第1题
解题思路:本题就是在一个二叉链表中查找指定的结点x的过程。可以利用二叉树的任意一种遍历方法进行查找。这里利用先序遍历方法,首先判断当前结点是否是要查找的结点,如果是,则查找成功,返回结点的地址;如果不是,则分别到它的左子树和右子树中进行查找。
第2题
为便于存储和处理一般树结构形式的信息,常采用孩子—兄弟表示法将其转换成二叉树(左子关系表示父子、右子关系表示兄弟),与下图所示的树对应的二叉树是(53)。
A.
B.
C.
D.
【我提交的答案】: |
【参考答案与解析】: 正确答案:A |
解析:本题考查一般树结构的存储和树与二叉树的转换。树的孩子兄弟表示法又称为二叉链表表示法,即在链表的结点中设置两个指针域,分别指向该结点的第一个孩子和下一个兄弟,如此,就可将一棵树转换为一棵二叉树。
请问A是不是错的呀?根据:“左孩子,右兄弟”,6应该是5的右子树,7应该是4的左子树吧?求解!
第3题
A.完全二叉树中,叶结点的双亲的左兄弟(如果存在)一定不是叶结点
B.任何一棵二叉树,终端结点数为度为2的结点数减1
C.二叉树不适合用顺序结构存储
D.结点按层序编号的二又树,第i个结点的左孩子(如果存在)的编号为2i
第4题
[说明]
借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历
过程如下:
若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。
函数中使用的预定义符号如下:
typedef struct BiTNode{
int data;
struct BiTNode *iChiid,*rChiid;
} BiTNode,*BiTree;
typedef struct SNode{/*链栈的节点类型*/
BiTree elem;
struct SNode *next;
}SNode;
[函数]
int InOrderTraverse(BiTree root)
{
BiTree P;
SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/
P=root;
while(p !=NULL || stop !=NULL){
if( (1) ){ /*不是空树*/
q=(SNode*)malloc(sizeof q);
if(q==NULL)return-1;
/*根节点指针入栈*/
(2);
q->elem=P;
stop=q;
P=(3); /*进入根的左子树*/
}else{
q=stop;
(4); /*栈顶元素出栈*/
printf("%d|,q->elem->data); /*防问根节点*/
P=(5); /*进入根的右子树*/
free(q); /*释放原栈顶元素*/
}/*if*/
}/*while*/
return 0;
}/*InOrderTraverse*/
(1)
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!