C语言二叉树任一结点的特征计算,二级C语言公共础部分知识归纳及模拟试题.doc...

二级C语言公共础部分知识归纳及模拟试题

第一部分 公共基础部分知识归纳

数据结构与算法

算法---是一组严谨地定义运算顺序的规则

算法的基本要素---一是对数据对象的运算和操作,二是算法的控制结构

算法设计基本方法---列举法、归纳法、递推、递归、减半递推

算法的复杂度---包括时间复杂度和空间复杂度

时间复杂度---执行算法所需的计算工作量

空间复杂度---执行算法所需的内存空间

数据结构---相互有关联的数据元素的集合。如春、夏、秋、冬;18、11、35、23、16。。。;父亲、儿子、女儿等都是数据元素。

前件---数据元素之间的关系,如父亲是儿子和女儿的前件

后件---如儿子是父亲的后件

结构---指数据元素之间的前后件关系

数据的逻辑结构—是指反映数据元素之间逻辑关系,而与它们在计算机中的存储位置无关

数据的存储结构(物理结构)---数据的逻辑结构在计算机存储空间中的存放形式,数据元素在计算机存储空间的位置关系可能与逻辑关系不同。

根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构分两类---线性结构与非线性结构

线性结构(线性表)---满足下列两个条件(1)有且只有一个根结点(2)每一个结点最多有一个前件和后件。则称该数据结构为线性结构,否则为非线性结构。

线性表是最简单、最常用的一种数据结构,其数据元素之间的相对位置是线性的,其存储方式为顺序存储的,如数组

栈---是限定在一端进行插入与删除的线性表,一端封闭,另一端开口,其操作原则是“先进后出”,栈的运算有入栈、退栈、读栈顶元素

队列---是指在一端进行插入(称为队尾)而在另一端进行删除(称为队头)的线性表,其操作规则是“先进先出”,其运算有入队和退队。

树---是一种简单的非线性结构,而且是层次结构,是倒立的大树,有根结点、父结点、子结点、叶子结点。根结点在第一层,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为 树的度,树的最大层次称为树的深度。

二叉树---(1)非空二叉树只有一个根结点(2)每一个结点最多有两棵子树(左子树和右子树),其存储结构为链式。

二叉树性质---(1)K层上最多有2(K-1)个结点(2)深度为m的二叉树最多有2m-1个结点

(3)度为0的结点(叶子结点)比度为2的结点多一个(4)具有n个结点的二叉树,其深度至少为[Log2n]+1,其中[Log2n]表示对Log2n取整

满二叉树---除最后一层外,其余层的结点都有两个子结点

完全二叉树---除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点,叶子结点只可能在层次最大的两层上出现。满二叉树是完全二叉树,而完全二叉树不是满二叉树。完全二叉树有两个性质:(1)具有n个结点的完全二叉树的深度为[Log2n]+1(2)

二叉树遍历---不重复地访问各个结点。分为前序遍历(DLR-根左右)、中序遍历(LDR-左根右)和后序遍历(LRD-左右根)

查找技术---顺序查找——对于长度为n的有序线性表,查找时需要比较n次

二分法查找——对于长度为n的有序线性表,查找时需要比较log2n次

排序技术---假设线性表的长度为n,则冒泡排序和简单插入排序的比较次数(时间复杂度)为n(n-1)/2;希尔排序的比较次数为O(n1.5);简单选择排序的比较次数为n(n-1)/2;堆排序的比较次数为O(nlog2n).

习题1

算法的时间复杂度是指( ),算法的空间复杂度是指( );

线性表、栈、队列、线性链表是(线性结构),树是(非线性结构);数据的存储结构是指( );

队列是(先进先出),栈是(先进后出);

下列二叉树的遍历结果:前序遍历(ABDECF)、中序遍历(DBEAFC)、后续遍历(DEBFCA)

在深度为5的满二叉树中,叶子结点的个数为(16);设树T的度为4,其中度为1,2,3,4的结点的个数分别为4,2,1,1。则T中的叶子结点的个数为(8);对于长度为n的有序线性表,顺序查找次数为(n),二分法查找次数为(log2n);一棵完全二叉树共有700个结点,则在该二叉树中有(350)个叶子结点;一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后续遍历结果为(DEBFCA);冒泡排序的时间复杂度为(n(n-1)/2);在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有(3)元素;

程序设计基础

结构化程序设计的三种结构---是顺序、选择和循环

对象---表示客观世界的任何实体

类---是具有共同属性和方法的对象的集合

实例---任何一个对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你回答这个问题。下面是一份求二叉树指定结点到根的路径C语言代码,同时还包括了建立二叉树代码: ```c #include <stdio.h> #include <stdlib.h> // 定义二叉树结构体 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; // 创建新节点 struct TreeNode* createNode(int val) { struct TreeNode* newNode = (struct TreeNode*) malloc(sizeof(struct TreeNode)); newNode->val = val; newNode->left = NULL; newNode->right = NULL; return newNode; } // 建立二叉树 struct TreeNode* createTree() { struct TreeNode* root = createNode(1); root->left = createNode(2); root->right = createNode(3); root->left->left = createNode(4); root->left->right = createNode(5); root->right->left = createNode(6); root->right->right = createNode(7); return root; } // 求指定结点到根的路径 int findPath(struct TreeNode* root, int val, int path[]) { if (root == NULL) { return 0; } if (root->val == val) { path[0] = root->val; return 1; } int left = findPath(root->left, val, path); int right = findPath(root->right, val, path); if (left || right) { path[left + right] = root->val; return left + right + 1; } return 0; } // 主函数 int main() { int path[100]; struct TreeNode* root = createTree(); int val = 5; int len = findPath(root, val, path); printf("路径为:"); for (int i = len - 1; i >= 0; i--) { printf("%d ", path[i]); } return 0; } ``` 以上代码中,`createNode` 函数用于创建新的二叉树节点,`createTree` 函数用于按照题目要求建立二叉树,`findPath` 函数用于求指定结点到根的路径。在 `main` 函数中,我们可以指定要求哪个结点的路径,并且输出这个路径。 希望这份代码可以帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值