MOOC数据结构 第8周测验

1.树最适合用来表示( A)。
A.元素之间具有层次关系的数据
B.元素之间无联系的数据
C.有序数据元素
D.无序数据元素
2.现有一“遗传”关系,设x是y的父亲,则x可以把他的属性遗传给y。表示该遗传关系最适合的数据结构为( B)。
A.图
B.树
C.线性表
D.数组
3.一棵节点个数为n、高度为h的m(m≥3)次树中,其分支数是(B )。
A.n+h
B.n-1
C.h-1
D.nh
4.若一棵3次树中有2个度为3的节点,1个度为2的节点,2个度为1的节点,该树一共有( C)个节点。
A.5
B.10
C.11
D.8
5.设树T的度为4,其中度为1、2、3、4的节点个数分别为4、2、1、1,则T中的叶子节点个数是( B)。
A.5
B.8
C.7
D.6
6.有一棵三次树,其中n3=2,n2=1,n0=6,则该树的节点个数为(B )。
A.12
B.大于等于9的任意整数
C.9
D.10
7.假设每个节点值为单个字符,而一棵树的后根遍历序列为ABCDEFGHIJ,则其根节点值是( B)。
A.A
B.J
C.以上都不对
D.B
8.一棵度为5、节点个数为n的树采用孩子链存储结构时,其中空指针域的个数是(B )。
A.5n
B.4n+1
C.4n-1
D.4n
9.有一棵三次树,其中n3=2,n2=2,n1=1,该树采用孩子兄弟链存储结构时,则总的指针域数为( B)。
A.36
B.24
C.16
D.10
10.以下关于二叉树的说法中正确的是(A )
A.二叉树中不存在度大于2的节点
B.二叉树就是度为2的树
C.二叉树中每个节点的度都为2
D.二叉树就是度为2有序树
11.按照二叉树的定义,具有3个节点的二叉树有( D)种。
A.3
B.4
C.6
D.5
12.一棵完全二叉树中有1000个节点,其中度为1的节点个数是( D)。
A.2
B.不确定
C.0
D.1
13.一棵满二叉树有m个叶子节点和n个节点,其高度为h,则有( C)。
A.h+m=2n
B.n=h+m
C.在这里插入图片描述

D.m=h-1
14.设森林F中有4棵树,第1、2、3、4棵树的节点个数分别为a、b、c、d,将森林F转换为二叉树B,则B中根节点的左子树上的节点个数是(C )。
A.a
B.a+b+c
C.a-1
D.b+c+d //右子树
15.一棵完全二叉树中有501个叶子节点,则至少有( C)个节点。
A.1002
B.502
C.1001
D.501
1 .若一棵度为4的树中度为1、2、3、4的节点个数分别为4、3、2、2,则该树的总节点个数是多少?
答:n=25。
2 .对于度为m的树T,其高度为h,则最少的节点个数和最多的节点个数分别是多少?
答:最少的节点个数:h+m-1个。
最多的节点个数:(m^h-1)/(m-1)个。
3 .对于含有n个节点的m次树,采用孩子链存储结构时,其中空指针域的个数有多少?
答:(m-1)n+1。
4 .任意一个有n个节点的二叉树,已知它有m个叶子节点,试证明有(n-2m+1)个度数为1的节点。
答:n0=n2+1;
度之和=分支数;
度之和=n1+2
n2;
分支数=n-1;
n=n0+n1+n2;
所以n0=m=n2+1;
n1=n-m-n2=n-m-m+1=(n-2m+1);
5 .为什么说一棵非空完全二叉树,一旦节点个数n确定了,其树形也就确定了。
答:可以计算出高度h以及n0、n1和n2
6 .已知一棵完全二叉树的第6层(设根为第1层)有8个叶子节点,则该完全二叉树的节点个数最多是多少?
答:2^6-1个。
7 .假设非空二叉树采用顺序存储结构,每个节点值为单个字符。设计一个算法求编号为i的节点的层次。
答:
//使用二叉链存储。

#include <iostream>
#include <stdlib.h>
using namespace std;
const int MaxSize=100;
typedef struct node
{
    
    
	char data;
	struct node *lchild,*rchild;
}BTNode;
void CreatBTNode(BTNode *&b,char *str)
{
    
    
	BTNode *St[MaxSize],*p;
	int top=-1,k,j=0;
	char ch;
	b=NULL;
	ch=str[j];
	while(ch!='\0')
	{
    
    
		switch(ch)
		{
    
    
			case'(':top++;
			        St[top]=p;
			        k=1;
			        break;
			case')':top--;
			        break;
			case',':k=2;
					break;
			default:
				p=(BTNode *)malloc(sizeof(BTNode));
				p->data=ch;
				p->lchild=p->rchild=NULL;
				if(b==NULL)  b=p;
				else
				{
    
    
					switch(k)
					{
    
    
						case 1:St[top]->lchild=p; break;
						case 2:St[top]->rchild=p; break;
					}
				}
		}
		j++;
		ch=str[j];
	}
}
int level(BTNode *b,char x,int h)
{
    
    
	int l;
	if(b==NULL) return 0;
	else if(b->data==x) return h;
	else
	{
    
    
		l=level(b->lchild,x,h+1);
		if(l==0)
		return level(b->rchild,x,h+1);
		else return l;
	}
}
int main()
{
    
    
	BTNode *b;
	char ch='D';
	char str[100]="A(B(E,F),C(G(J)),D(H,I(K,L,M)))";
	CreatBTNode(b,str);
	cout<<level(b,ch,1);
	return 0;
}

8 .假设非空二叉树采用顺序存储结构,每个节点值为单个字符。设计一个算法输出编号为i的节点的所有祖先节点值。
答:

#include <iostream>
#include <stdlib.h>
using namespace std;
const int MaxSize=100;
typedef struct node
{
    
    
	char data;
	struct node *lchild,*rchild;
}BTNode;
void CreatBTNode(BTNode *&b,char *str)
{
    
    
	BTNode *St[MaxSize],*p;
	int top=-1,k,j=0;
	char ch;
	b=NULL;
	ch=str[j];
	while(ch!='\0')
	{
    
    
		switch(ch)
		{
    
    
			case'(':top++;
			        St[top]=p;
			        k=1;
			        break;
			case')':top--;
			        break;
			case',':k=2;
					break;
			default:
				p=(BTNode *)malloc(sizeof(BTNode));
				p->data=ch;
				p->lchild=p->rchild=NULL;
				if(b==NULL)  b=p;
				else
				{
    
    
					switch(k)
					{
    
    
						case 1:St[top]->lchild=p; break;
						case 2:St[top]->rchild=p; break;
					}
				}
		}
		j++;
		ch=str[j];
	}
}
bool PrintAncestors(BTNode* _root, char target)
{
    
    
	if (!_root) return false;
	if (_root->data == target) return true;
	if (PrintAncestors(_root->lchild, target) || PrintAncestors(_root->rchild, target))
	{
    
    
		cout << _root->data << " ";
		return true;
	}
 
	return false;
}
int main()
{
    
    
	BTNode *b;
	char ch='M';
	char str[100]="A(B(E,F),C(G(J)),D(H,I(K,L,M)))";
	CreatBTNode(b,str);
	PrintAncestors(b,ch);
	return 0;
}

//算法借鉴https://blog.csdn.net/laojiu_/article/details/50820874

猜你喜欢

转载自blog.csdn.net/weixin_46226815/article/details/108053413