摘要: 问题描述: 问题分析: 阅读全文
posted @ 2017-05-07 11:33 锅里煮水 阅读(2439) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-04-27 10:16 锅里煮水 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 方法一: vector<vector<int>>array=(2,vector<int>()); array[0].push_back(1); array[i].push_back(2); 方法二: vector<vector<int> >array={{1,2},{3,,4}}; 阅读全文
posted @ 2017-04-26 13:35 锅里煮水 阅读(5921) 评论(0) 推荐(0) 编辑
摘要: 哈夫曼树的特点: 没有度为1的结点(每个非叶子结点都是由两个最小值的结点构成) n个叶子结点的哈夫曼树总共有2n-1个结点 n0:叶结点总数 n1:只有一个儿子的结点总数 n2:有2个儿子的结点总数 n2=n0-1 N=n0+n1+n2=2n-1 哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树; 阅读全文
posted @ 2017-04-25 14:34 锅里煮水 阅读(4894) 评论(0) 推荐(1) 编辑
摘要: 每次把权值最小的两棵二叉树合并 例如:1 2 3 4 5 生成的哈夫曼树如下 我们利用最小堆来获得两个最小的值,并把新的节点插入堆中。 也可以先排序,删除两个最小的,再把新值插入,但是效率没有最小堆高。 1 typedef struct TreeNode *HuffmanTree; 2 struct 阅读全文
posted @ 2017-04-25 14:20 锅里煮水 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 测试数据: 有尾巴不反转 地址取到上下界 正好全反转(K的整数倍) K=N全反转 边界测试 K=1不用反转 最大(最后剩K-1不反转)、最小N 有多余结点 阅读全文
posted @ 2017-04-25 10:47 锅里煮水 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 初始化链表:1 2 3 4 5 6 结果链表:4 3 2 1 5 6 【问题】将初始链表中的前k个逆转 阅读全文
posted @ 2017-04-25 10:41 锅里煮水 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 【分析】:关键是找到元素应该插入的位置,可以采用与Find类似的方法。 阅读全文
posted @ 2017-04-24 11:22 锅里煮水 阅读(515) 评论(0) 推荐(0) 编辑
摘要: (一)二叉搜索树的查找操作Find 由于非递归函数的执行效率高,可将“尾递归”函数改为迭代函数 查找的效率决定于树的高度。(二)查找最大和最小元素 最大元素一定是在树的最右分枝的端结点上; 最小元素一定是在树的最左分枝的端结点上。 查找最小元素的递归函数: 查找最大元素的迭代函数: 阅读全文
posted @ 2017-04-24 11:07 锅里煮水 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 先序遍历的非递归遍历算法: 阅读全文
posted @ 2017-04-22 11:21 锅里煮水 阅读(1658) 评论(0) 推荐(1) 编辑