数据结构与算法分析(C++语言版)_张琨版 第六章树和二叉树课后习题答案

一、选择题

1.A 2.C 3.C 4.A 5.D 6.A 7.D 8.C 9.D 10.D

二、填空题

在这里插入图片描述

三、判断题

  1. √ 2. √ 3.× 4. √ 5. × 6. √ 7. √ 8. × 9. √ 10. ×

四、简答题

  1. 答案如下:
    在这里插入图片描述

  2. 采用前序和后序两个序列来判断二叉树上结点 B 必定是结点 F 的祖先。
    在前序序列中某结点的祖先都排在其前。若结点 B 是 F 的祖先,则 B必定在 F 之前。
    而在后序序列中,某结点的祖先排在其后,即若结点 B 是 F 的祖先,则 B 必在 F 之后。
    根据这条规则来判断若结点 B 在前序序列中在 F 之前,在后序序列中又在 F 之后,则它必是结点 F 的祖先

  3. 树的孩子兄弟链表表示法和二叉树二叉链表表示法,本质是一样的,只是解释不同,
    也就是说树(树是森林的特例,即森林中只有一棵树的特殊情况)可用二叉树唯一表示,并可使用二叉树的一些算法去解决树和森林中的问题。
    树和二叉树的区别有三:一是二叉树的度至多为 2,树无此限制;
    二是二叉树有左右子树之分,即使在只有一个分枝的情况下, 也必须指出是左子树还是右子树,树无此限制;
    三是二叉树允许为空,树一般不允许为空(个别书上允许为空)

  4. 在后续线索二叉树中,若节点*p有右线索,则右线索为后继节点;否则,*p节点的后继节点为其双亲节点右子树中最左下的叶子节点。

五、计算题

  1. 代码如下:
int LeafNum(CSTree& T)
{
	if(T){
		if(!T->firstchild)
			return 1+LeafNum(T->nextsibling);
		else
			return LeafNum(T->firstchild)+LeafNum(T->nextsibling);
	}
	else 
return 0;
}
  1. //n 个结点的完全二叉树存于一维数组 A 中,本算法据此建立以二叉链表表示的完全二
    叉树
BiTree Creat(ElemType A[], int i)
{
	BiTree tree;
	if (i<=n)
	{
		tree=(BiTree)malloc( sizeof(BiNode)); 
		tree->element=A[i];
		if(2*i>n) 
		{
			tree->lchild=NULL;
		}
		else 
		{
			tree->lchild=Creat(A,2*i)}
		if(2*i+1>n)
		{
 			tree->rchild=NULL}
		else
		{
			 tree->rchild=Creat(A,2*i+1)}
	}
	return (tree)}//Creat

  1. (1)//删除二叉树代码如下:
Status DelBTree(BiTree& T)
{
	if(T)
{
		DelBTree(T->lchild);
		DelBTree(T->rchild);
		delete T;
		return OK;
	}
	else
 return ERROR;
}

(2) //求二叉树中度为1的节点个数

int NumberOfOneDegree(BTNode *T)//求二叉树中度为1的节点个数 
{
    int i=0;
    if(NULL != T)
    {
           
           if((NULL!=T->lchild  && NULL==T->rchild) ||(NULL!=T->rchild && NULL ==T->lchild))
            {
                 i=1+NumberOfOneDegree(T->lchild)+NumberOfOneDegree(T->rchild);
            }
            else
            {
                 i=NumberOfOneDegree(T->lchild)+NumberOfOneDegree(T->rchild);
            }
            
    }
    return i;
}

(3) // 按先序交换二叉树的左右子树

Status ExchangeBiTree(BiTree& T)
{
	BiTree p;
	if(T){
		p=T->lchild;
		T->lchild=T->rchild;
		T->rchild=p;
		ExchangeBiTree(T->lchild);
		ExchangeBiTree(T->rchild);
	}
	return OK;
}
  1. 解析如下:
    在这里插入图片描述
  2. 解析如下:
    在这里插入图片描述

六、说明

本人已毕业多年,读研时撰写了一份 《数据结构与算法分析(C++语言版)_张琨版 课后习题答案》,每年依旧有大量考研的学弟学妹们来找这份答案,现将其公布在blog上,仅供学术交流,上述解答如有问题,可私信沟通。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值