第六章测试1.已知一棵树边的集合为{<I,M>, <I,N>, <E,I>, <B,E>, <B,D>, <A,B>, <G,J>, <G,K>, <C,G>, <C,F>, <H,L>, <C,H>, <A,C>},问这棵树中结点G的双亲结点为( )
A:B B:I C:C D:A
答案:C
2. 一棵二叉树中,叶子的个数为10,则其度为2的结点的个数为 ( ) ;
A:10 B:9 C:11 D:12 3.假如一棵二叉树的中序遍历结果为ABCD,则结点A和结点D的关系一定不是( );
A:结点A是结点D的右子树上的结点 B:结点A是结点D的双亲结点 C:结点A是结点D的左子树上的结点 D:结点A与结点D具有共同的双亲的右子树上的结点 4.已知一棵树边的集合为{<I,M>, <I,N>, <E,I>, <B,E>, <B,D>, <A,B>, <G,J>, <G,K>, <C,G>, <C,F>, <H,L>, <C,H>, <A,C>},将此树转化为二叉树后,E的左孩子为( );
A:A B:I C:B D:C 5.一棵哈夫曼树有17个结点,则其叶子结点的个数是 _________ 。
A:8 B:9 C:7 D:10 6.写递归算法,将二叉树中所有结点的左、右子树相互交换。Status ExchangeBiTree(BiTree& T){ BiTreep; if(T){ p=T->lchild; T->lchild=T->rchild; T->rchild=p; ExchangeBiTree(T->lchild); __________ } returnOK;}
A:ExchangeBiTree(T->lchild->rchild) B:ExchangeBiTree(T->rchild); C:ExchangeBiTree(T); D:A.ExchangeBiTree(p); 7.试写一个算法,为一棵二叉树建立后序线索二叉树。StatusPostOrderThreading(BiThrTree& T,BiThrTree& pre);//首先建立后序线索树StatusFindNextInBiThrTree(BiThrTree& q,TElemType *p);//再进行查找 // 后序线索二叉树的算法StatusPostOrderThreading(BiThrTree& Thrt,BiThrTree& T){ BiThrTree pre; Thrt=new BiThrNode; // 为线索二叉树建立头结点 if(!Thrt) exit(OVERFLOW); Thrt->LTag=Link; Thrt->RTag=Thread; Thrt->rchild=Thrt;// 右子树回指 if(!T) Thrt->lchild=Thrt;// 若二叉树空,左子树回指 else{ Thrt->lchild=T; pre=Thrt; PostThreading(T,pre);// 后序遍历进行后序线索化 pre->rchild=Thrt;//最后一个结点线索化 pre->RTag=Thread; Thrt->rchild=pre; } return OK;} StatusPostThreading(BiThrTree& T,BiThrTree& pre){ if(T){ if(T->LTag==Link)PostThreading(T->lchild,pre); if(T->RTag==Link)PostThreading(T->rchild,pre); if(!T->lchild){ T->LTag=Thread; ___________ } if(pre &&!pre->rchild){ pre->RTag=Thread; pre->rchild=T; } pre=T; } return OK;}
A:T->lchild=pre; B:pre->lchild=T C:pre->rchild=T D:T->rchild=pre 8.1.编写递归算法,将二叉树中所有结点的左、右子树相互交换。StatusExchangeBiTree(BiTree& T){ BiTree p; if(T){ p=T->lchild; T->lchild=T->rchild; T->rchild=p; ExchangeBiTree(T->lchild); } return OK;}
A:ExchangeBiTree(p); B:ExchangeBiTree(T); C:ExchangeBiTree(T->lchild->rchild); D: ExchangeBiTree(T->rchild);
温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!