一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二叉树:所有终端都在同一层次,且非终端结点的度数为2。 在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。 ...
分类:
其他好文 时间:
2018-05-20 15:25:38
阅读次数:
308
package tree; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Stack; /** * 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [... ...
分类:
其他好文 时间:
2018-05-13 10:40:06
阅读次数:
145
递归实现块排:快速排序+随机快排 非递归实现块排具体思路如下图: ...
分类:
其他好文 时间:
2018-04-14 13:52:07
阅读次数:
157
以下用递归和非递归实现斐波拉契函数,查看两种方法需要的时间。 输出: 632459860:00:00632459860:00:40.448000 可以发现,非递归实现不到1秒,递归实现需要40多秒 ...
分类:
其他好文 时间:
2018-04-08 18:09:14
阅读次数:
115
直接上代码 还有一种方法:前序遍历的时候,顺序是:根-左-右。现在只要改成:根-右-左,最后在reverse一下 注意由于stack先进后出,前序遍历的时候是先压入右,再压左,这里是先左后右 层序遍历: 层序遍历用BFS 迭代方法:存取节点的结构是queue队列,常用的实现类是linkedlist, ...
分类:
其他好文 时间:
2018-03-13 12:16:39
阅读次数:
143
C/C++非递归实现: C/C++递归实现: python3递归实现: python3非递归实现: ...
分类:
其他好文 时间:
2018-03-05 20:50:42
阅读次数:
109
7-17 汉诺塔的非递归实现(25 分) 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。 输入格式: 输入为一个正整数N,即起始柱上的盘数。 输出格 ...
分类:
其他好文 时间:
2018-02-18 23:40:03
阅读次数:
399
根据输入的广义表建立子女右兄弟链的二叉树表示,该二叉树对应于广义表对应的普通树。先考虑更复杂的情形,如果广义表中存在共享表,则将其转换为带共享子树的二叉树表示,每一共享子树带有附加头节点,其左链指针指向共享子树,最后输出带共享子树的子女右兄弟链表示(广义表形式) C++代码: 运行结果: 广义表无共 ...
分类:
编程语言 时间:
2018-02-10 17:08:57
阅读次数:
267
将子女右兄弟链修改为普通树然后将普通树修改为子女右兄弟链,注意是在原树上直接进行修改,不是根据原树创建转换后的新树,为了操作方便,树指针域用vector表示 C++代码: 子女右兄弟链存在共享子树情形: 运行结果: 子女右兄弟链无共享子树情形(相对简单): 运行结果: ...
分类:
其他好文 时间:
2018-02-10 17:04:42
阅读次数:
196