摘要:
问题描述: 问题分析: 阅读全文
摘要:
方法一: 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}}; 阅读全文
摘要:
哈夫曼树的特点: 没有度为1的结点(每个非叶子结点都是由两个最小值的结点构成) n个叶子结点的哈夫曼树总共有2n-1个结点 n0:叶结点总数 n1:只有一个儿子的结点总数 n2:有2个儿子的结点总数 n2=n0-1 N=n0+n1+n2=2n-1 哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树; 阅读全文
摘要:
每次把权值最小的两棵二叉树合并 例如:1 2 3 4 5 生成的哈夫曼树如下 我们利用最小堆来获得两个最小的值,并把新的节点插入堆中。 也可以先排序,删除两个最小的,再把新值插入,但是效率没有最小堆高。 1 typedef struct TreeNode *HuffmanTree; 2 struct 阅读全文
摘要:
测试数据: 有尾巴不反转 地址取到上下界 正好全反转(K的整数倍) K=N全反转 边界测试 K=1不用反转 最大(最后剩K-1不反转)、最小N 有多余结点 阅读全文
摘要:
初始化链表:1 2 3 4 5 6 结果链表:4 3 2 1 5 6 【问题】将初始链表中的前k个逆转 阅读全文
摘要:
【分析】:关键是找到元素应该插入的位置,可以采用与Find类似的方法。 阅读全文
摘要:
(一)二叉搜索树的查找操作Find 由于非递归函数的执行效率高,可将“尾递归”函数改为迭代函数 查找的效率决定于树的高度。(二)查找最大和最小元素 最大元素一定是在树的最右分枝的端结点上; 最小元素一定是在树的最左分枝的端结点上。 查找最小元素的递归函数: 查找最大元素的迭代函数: 阅读全文
摘要:
先序遍历的非递归遍历算法: 阅读全文