题目如下:题目给出的例子不太好,容易让人误解成不断顺着右节点访问就好了,但是题目意思并不是这样。换成通俗的意思:按层遍历二叉树,输出每层的最右端结点。这就明白时一道二叉树层序遍历的问题,用一个队列来处理,但是问题是怎么来辨别每层的最右端结点,我思考了半天,最后想出的办法是利用一个标记位,例如上面的例...
分类:
编程语言 时间:
2015-04-27 00:08:55
阅读次数:
232
堆排算是排序算法中比较难的一个算法,在实现编码之前首先要对堆排的思想有一个清晰的思路,下面我们就来分析一下堆排序。
1.首先要明白堆排序第一步要有堆,也就是完全二叉树,那么问题来了,如何创建一个完全二叉树呢?完全二叉树是需要按层来创建的,如果你曾经编写过按层遍历二叉树这块会很好理解,按层的话要记录上一个结点,所以要用到 队列,创建的节点依次入队。
2.创建好完全二叉树,堆排...
分类:
编程语言 时间:
2015-04-21 09:56:25
阅读次数:
165
好久不写了,最近忙毕业论文呢。这个题,就是说一个二叉树,你从右边看,你能看到的数有哪些(会被遮挡)其实抽象出来就是说。。。二叉树每层最右边的数有哪些。。那我们按层遍历一次就好了。/** * Definition for binary tree * struct TreeNode { * in...
分类:
其他好文 时间:
2015-04-12 20:37:02
阅读次数:
110
1、二叉树定义
typedef struct BTreeNodeElement_t_ {
void *data;
} BTreeNodeElement_t;
typedef struct BTreeNode_t_ {
BTreeNodeElement_t *m_pElemt;
struct BTreeNode_t_ *m_pLeft;
struct BTr...
分类:
其他好文 时间:
2014-12-15 10:28:29
阅读次数:
161
《算法》中二叉查找树一节的习题:按层遍历二叉查找树。可以使用队列来管理二叉查找树中的节点,节点按照如下方法入队出队:节点x入队当队列不为空时使用队列的第一个元素first如果节点first.left不为空则将fisrt.left入队如果节点first.right不为空则将first.right入队将...
分类:
其他好文 时间:
2014-12-06 00:00:43
阅读次数:
380
题目:从上而下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打樱二叉树结点定义如下:structBinaryTreeNode
{
intm_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
}分析:就是二叉树的按层遍历,即广度优先遍历。利用队列进行编程。每一次打印一个节..
分类:
其他好文 时间:
2014-12-02 00:20:57
阅读次数:
175
为了保证按层遍历,可以使用一个队列,而不能直接使用递归3,1,2,4的子节点只有1324::2134::4213上图存在不对的情况DP的关键在于可以避免重复计算,在这个问题上,4213被分成2413和1243时,即m[12]m[13],m[12]计算出来以后,它并不能拿来被m[13]使用。两者不存在...
分类:
其他好文 时间:
2014-09-06 22:29:14
阅读次数:
262
题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
运用队列,按层遍历,每次遍历一层时,添加新指针,由于每个节点只需要进队一次出队一次,时间复杂度为O(n),空间复杂度为O(n),具体代码如下:
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-06 19:10:42
阅读次数:
184
题意:给定一棵二叉树,返回按层遍历的结果
思路1:bfs,定义一个新的struct,记录指针向节点的指针和每个节点所在的层
复杂度1:时间O(n),空间O(n)
思路2:dfs
递归函数:
void levelOrder(TreeNode *root, int level, vector<vector >&result)
表示把根为root的树按层存放在result中,其中level表示当前的层数
复杂度2:时间O(n),空间O(n)
相关题目:...
分类:
其他好文 时间:
2014-05-15 14:46:06
阅读次数:
355
题意:从底往上按层遍历二叉树
思路:
思路和Binary Tree Level Order Traveral 一样,
即从上往下按层遍历二叉树,将每一层的节点存放到该层对应的数组中
最后将得到的数组倒转一下就可以了
按层遍历二叉树可用bfs,也可用dfs,但都要记录节点所在的层
复杂度:时间O(n), 空间O(n)...
分类:
其他好文 时间:
2014-05-15 06:32:14
阅读次数:
278