1) 递推 6!=>5!=>4!=>3!=>2!=>1!=>0!
2) 回归 720<=120<=24<=6 <=2 <=1 <=0
递归
工作栈实现递归的机制。
2、有关算法:
1) 顺序,链表结构下的出栈,入栈
2) 循環,队列的入队列,出队列。
3) 链队列的入队列,出队列。
4) 表达式计算:后缀表达式 35+6/4368/+*-
中缀表达式 (3+5)/6-4*(3+6/8)
由于中缀比较难处理,计算机内一般先将中缀转换为后缀。
运算:碰到操作数,不运算,碰到操符,运算其前两个操作数。
中缀=>后缀
5) 迷宫问题
6) 线性链表的递归算法 一个链表=一个结点+一个链表
int fuction(NODE *p) {
if(p==NULL) return 0;
else return(function(p->next));
}
树与二叉树
一、 知识点:
1. 树的定义: data_struct(D,R);
其中:D中有一个根,把D和出度去掉,可以分成M个部分.
D1,D2,D3,D4,D5…DM
R1,R2,R3,R4,R5…RM
而子树Ri形成树.
1) 递归定义 高度
2) 结点个数=1
O --0
O O --1
O O O O --2
此树的高度为2
2.二叉树定义:
结点个数>=0 .
3. 术语:左右孩子,双亲,子树,度,高度等概念.
4. 二叉树的性质
●层次为I的二叉树 I层结点 2I 个
●高度为H的二叉树结点 2H+1-1个
●H(点)=E(边)+1
●个数为N的完全二叉树高度为|_LOG2n_|
●完全二叉树结点编号:从上到下,从左到右.
i结点的双亲: |_i/2_| |_i-1/2_| 1
i结点的左孩子: 2i 2i+1 2 3
i结点的右孩子: 2i+1 2i+2 4 5 6 7
(根) 1为起点 0为起点
二叉树的存储结构:
1) 扩展成为完全二叉树,以一维数组存储。
A
B C
D E F
G H I
数组下标 0 1 2 3 4 5 6 7 8 9 10 11 12
元素 A B C D E F G H I
2) 双亲表示法
数组下标 0 1 2 3 4 5 6 7 8
元素 A B C D E F G H I
双亲 -1 0 0 1 2 2 3 3 4
3) 双亲孩子表示法
数组下标 0 1 2 3 4 5 …
元素 A B C D E F …
双亲 -1 0 0 1 2 2 …
左子 1 3 4 …
右子 2 -1 5 …
分享到:
相关推荐
在程序员数据结构的学习中,以下几个关键知识点不容忽视: 1. **数据结构的基本概念**:数据结构指的是数据的组织方式,它定义了数据之间的关系以及操作这些数据的方法。在学习数据结构时,我们需要理解对象的定义...
本笔记主要关注程序员需要掌握的数据结构知识、能力以及解决问题的过程。 首先,数据结构中对象的定义是指数据的组织形式,比如是线性的、树形的还是图形的。这些对象包括线性表、栈、队列、数组、字符串(广义表不...
总的来说,程序员数据结构笔记涵盖了数据结构的基本概念、常见数据结构的操作及其时间复杂度分析,同时提供了具体的编程实例,帮助程序员理解和应用数据结构。掌握这些知识对于提升编程能力,特别是解决复杂问题的...
树是另一种非线性数据结构,特别是二叉树在很多算法中都有应用,例如二分查找和排序。集合通常涉及查找和排序操作,而图虽然不作为考试重点,但在实际问题中,如路由选择、社交网络分析等,图数据结构的应用十分广泛...
程序员在日常工作中,无论是开发系统软件、应用软件还是进行数据分析,都会频繁地与各种数据结构打交道。下面我们将深入探讨数据结构的一些核心知识点。 首先,数据结构中的对象定义指的是数据的组织形式,它可以是...
在软考程序员的准备过程中,理解并掌握数据结构是必不可少的。以下是一些关于数据结构的关键知识点: 1. **数据结构的定义**:数据结构指的是数据的逻辑结构、存储结构以及在其上定义的操作的集合。它可以是简单的...
在集合框架部分,Java提供了多种数据结构,如ArrayList、LinkedList、HashSet、TreeSet等。这些集合允许我们高效地存储和操作数据。并发修改异常(ConcurrentModificationException)通常发生在迭代集合时尝试修改...
数据结构是计算机科学中至关...总之,数据结构的学习涵盖了各种抽象数据类型及其操作,理解和熟练掌握这些知识对于程序员来说至关重要,无论是在学术研究还是实际开发中,都能帮助我们设计出更高效、更优雅的解决方案。
这篇“数据结构笔记”可能包含了关于这个主题的深入理解和实践应用。结合给出的标签“源码”和“工具”,我们可以推测这份文档不仅讨论了理论知识,可能还涉及到了实际编程实现和相关工具的使用。 在数据结构的学习...
二、数据结构与算法 1. **数据结构**:线性结构(数组、链表、队列、栈),树结构(二叉树、AVL树、红黑树),图结构,哈希表等,理解它们的特性及操作。 2. **算法**:排序(快速排序、归并排序、堆排序)、查找...
- 数据结构:数组、链表、栈、队列、树(二叉树、平衡树)、图等,以及它们的操作和应用。 - 算法:排序(冒泡、选择、插入、快速、归并)、搜索(线性、二分、深度优先、广度优先)等基本算法的理解与实现。 2. ...
程序员面试宝典(C/C++&数据结构&网络&数据库&操作系统)
《黑马程序员Android学习笔记》是一份专为初学者设计的详尽教程,旨在帮助那些希望踏入安卓开发领域的人员快速掌握核心知识。这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 ...