这个题的意思就是给定一个序列,判断这个序列是否是某个二叉排序树的后序遍历序列,这个算法的方法主要是根据后序遍历的性质,首先这个序列的最后一个元素肯定是根元素,然后将序列从左往右遍历,找到第一个大于根元素的点,这个点左边的肯定是当前根的左子树,这个点的右边肯定是当前根的右子树,继续向后遍历,看右子.....
分类:
其他好文 时间:
2014-06-26 00:18:44
阅读次数:
280
前/中/后缀表达式的转换 自然表达式转换为前/中/后缀表达式,其实是很简单的。首先将自然表达式按照优先级顺序,构造出与表达式相对应的二叉树,然后对二叉树进行前/中/后缀遍历,即得到前/中/后缀表达式。 举例说明将自然表达式转换成二叉树: a×(b+c)-d ① 根据表达式的优先级顺序,首先计算(b+...
分类:
其他好文 时间:
2014-06-26 00:03:03
阅读次数:
269
题目:输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历序列假设输入的数组的数字均不相同解题分析:对于二叉搜索树,中序序列一定是升序的,我们将后序遍历序列排序,结果即为 中序遍历序列如果该后序遍历序列是正确的,那么 由 中序遍历序列和后序遍历序列 一定可以构建一棵二叉树如果不能成功构建一棵二...
分类:
其他好文 时间:
2014-06-24 14:10:18
阅读次数:
166
题目:输入一棵BST,将该BST转换成一个排序的双向链表要求不能创建新的结点,只能调整树中结点指针的指向在BST中,左子节点的值 小于父节点的之, 父节点的值小于 右子节点的值因此我们在转换成有序的双向链表时,原先指向左子节点的指针调整为链表中指向前一个结点的指针原先指向右子节点的指针调整为链表中指...
分类:
其他好文 时间:
2014-06-24 13:38:31
阅读次数:
243
基于二叉树和数组实现限制长度的最优Huffman编码...
分类:
其他好文 时间:
2014-06-22 22:52:30
阅读次数:
206
Given a binary tree, return the postorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
2
/
3
return [3,2,1].
Note: Recursive solut...
分类:
其他好文 时间:
2014-06-22 20:58:01
阅读次数:
157
采用二叉树结合双向链表实现了限制长度的最优Huffman编码...
分类:
其他好文 时间:
2014-06-22 19:54:58
阅读次数:
221
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
2
/
3
return [1,2,3].
Note: Recursive soluti...
分类:
其他好文 时间:
2014-06-22 16:37:51
阅读次数:
168
(二叉)堆是一个数组,是一颗近似完全二叉树,分为大顶堆&小顶堆。表示堆的数组A有两个属性:(1)A.length表示数组元素的个数;(2)A.heap-size表示有多少个堆元素存储在数组A中。更多的关于堆的性质的介绍:算法导论第三版:p85-p89、编程珠玑:p141-p145。
堆的操作主要包括堆插入、堆删除两个,而堆插入设计到FixUp操作(自底向上调整),堆删除涉及到FixDown操作(自顶向下调整,大顶堆时对应算法导论上的MAX-HEAPIFY操作)。
本文主要给出的是大顶堆和小顶堆的基本操作的C...
分类:
其他好文 时间:
2014-06-22 13:58:41
阅读次数:
158
关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列.
步骤:
1.首先我们需要统计不同字符出现的次数。一个字符出现的次数越多,说明其优先级越高,其赫夫曼编码应该越短;
2.将待编码的字符(即带权节点)存入优先级队列,优先级即字符出现的次数;
3.不断迭代队列,直到队列中剩下一个元素...
分类:
其他好文 时间:
2014-06-22 13:53:31
阅读次数:
255