数据结构
申小远
这个作者很懒,什么都没留下…
展开
-
二叉树的性质
二叉树的每层上至多有2i−12i−12^{i-1}个节点(i>=1) 深度为k的二叉树至多有2k−12k−12^k-1个节点,满二叉树的深度k=log2(n+1)k=log2(n+1)k=log_2(n+1),n是二叉树的节点个数 对于任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1 推倒: 假设二叉树的节点总数为n,度为1的节点个数为n1 n=n0+...原创 2018-08-22 09:08:15 · 309 阅读 · 0 评论 -
栈和队列(笔记)
栈先进后出的特性,也就是对于的插入和删除操作都是在栈顶进行的 队列先进先出,从队尾插入,对头弹出 一般情况下栈用顺序表来实现,因为栈的操作需要栈顶进行弹出操作,此时需要将栈顶指针指向上一个元素,如果用链表来做,则需要从头开始查找(单链表),使用循环链表也需要将指针循环一圈,此时的时间复杂度都是O(n),也可以采用双向链表,但是双向链表实现起来并不简单(和顺序表相比),而使用线性表来进行弹出操作...原创 2018-08-20 08:09:27 · 250 阅读 · 0 评论 -
逆波兰计算(中缀转后缀、后缀表达式计算)
我们利用栈将中缀表达式转换为后缀表达式(逆波兰表达式)来计算表达式 此程序支持整数运算(+、-、*、/、^、()) 中缀表达式转后缀表达式 遍历中缀表达式,遇到操作数就输出,遇到符号就压入栈中(栈中的运算符为挂起状态),但是操作符的压栈出栈有如下规则: 如果当前运算符的优先级高于栈顶运算符,则直接将此运算符压入栈中 如果当前运算符的优先级低于栈顶运算符,则将栈顶运算符输出,直到碰见优先...原创 2018-08-20 10:31:36 · 306 阅读 · 0 评论