一、二叉树 1、二叉树的概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),其次序不能任意颠倒。 2、性质 (1)若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0); (2)高度为k的二叉 ...
分类:
其他好文 时间:
2018-05-27 10:39:06
阅读次数:
205
2.3.4 树 遍历:前中后序,宽度优先。 二叉树的特例:二叉搜索树、堆(最大堆和最小堆,用于找最值)、红黑树(c++ STL中的很多数据结果就是基于这实现的); 题7-重建二叉树:递归,设置四个位点; 题8-二叉树的下一个节点 ...
分类:
编程语言 时间:
2018-03-28 21:58:29
阅读次数:
186
先看下前中后序遍历的顺序是怎么样的: 下面通过一个例子来具体的描述前序遍历的流程: 以下都以“节点”代替,比如:“28”指的是 “28这个节点”。 流程顺序是:自、左、右 1.先访问“28”,然后访问“28”左节点即“16”。 2.然后“16”的左节点即“13”。好,这里是关键,“13”没继续访问其 ...
分类:
其他好文 时间:
2018-03-19 13:29:12
阅读次数:
169
[抄题]: [思维问题]: [一句话思路]: [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图]: [一刷]: [二刷]: [三刷]: [四刷]: [五刷]: [总结]: [复杂度]:Time complexity: O() Space com ...
分类:
其他好文 时间:
2018-01-27 21:21:42
阅读次数:
193
#include #include #include #define Size 100 #define Resize 10 typedef struct Bitnode{ //定义结点 char data; struct Bitnode *lchild,*rchild; }Bitnode,*Bitr... ...
分类:
其他好文 时间:
2017-11-02 13:19:05
阅读次数:
160
与树的前中后序遍历的DFS思想不同,层次遍历用到的是BFS思想。一般DFS用递归去实现(也可以用栈实现),BFS需要用队列去实现。 层次遍历的步骤是: 1.对于不为空的结点,先把该结点加入到队列中 2.从队中拿出结点,如果该结点的左右结点不为空,就分别把左右结点加入到队列中 3.重复以上操作直到队列 ...
分类:
编程语言 时间:
2017-07-03 11:55:11
阅读次数:
288
二叉树的前中后序遍历,他们的递归非递归。还有广度遍历,参见二叉树的前中后序遍历迭代&广度遍历和二叉树的前中后序遍历简单的递归 现在记录已知二叉树的前序中序后序遍历的两个,求另外一个。一般,这两个中一定有中序遍历。 1、已知前序和中序,求后序遍历: 前序:ABDECFG 中序:DBEAFCG 思路简单 ...
分类:
其他好文 时间:
2017-03-25 11:00:18
阅读次数:
261
递归很是简单 但也应该掌握其迭代方式的遍历方法 这三种的迭代遍历方法需要通过栈来存储节点 尤其是后序遍历还需要 记录当前节点的右子树是否已被遍历 决定是否遍历当前节点 而其广度遍历 只需要一个队列来顺序记录遍历节点 即可轻松解决问题 主要思想在程序代码中来做说明 前序遍历:遍历结果返回一个vecto ...
分类:
其他好文 时间:
2017-02-23 18:21:43
阅读次数:
213
二叉树的遍历 无外乎广度和深度 其中深度又分为前中后序遍历三种情况 这三种遍历若只是递归方法 自然很是简单 但递归代码简单 若嵌套层次太深 会栈溢出 二叉树节点数据结构: struct Binary_node{ int val; Binary_node *left; Binary_node *rig ...
分类:
其他好文 时间:
2017-02-23 17:20:25
阅读次数:
150
首先,要感谢网上的参考资料。 二叉树是使用的比较广泛的一种数据结构,这里我写了二叉树的相关操作,包括初始化、新建、以及遍历。这里主要是为了学习二叉树的遍历算法,我总结后,写了八种二叉树的遍历算法,分别是: 1.递归先序遍历 2.递归中序遍历 3.递归后序遍历 4.非递归先序遍历(单栈辅助) 5.非递 ...
分类:
编程语言 时间:
2016-11-07 09:38:28
阅读次数:
285