
数据结构,算法
HRNone
这个作者很懒,什么都没留下…
展开
-
关于两个链表是否相交的思路总结
最初遇到这道题是我在尝试着做一些面试题的时候,面试题的题目不仅要求你去解决一个问题,还要求你解决问题的时间和空间。这就让我们不得不思考更好的算法。 下面是题目描述:给出两个单向链表的头指针比如h1、h2,判断这两个链表是否相交?这是来自编程之美上的微软亚院的一道面试题目。 1)直接循环判断第一个链表的每个节点是否在第二个链表中。但,这种方法的时间复杂度为O(Length(h1) * Lengt原创 2017-11-29 11:43:19 · 221 阅读 · 0 评论 -
判断整数序列是不是二元查找树的后序遍历结果
判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。说完题目要求,我们就来...原创 2018-02-13 18:12:36 · 374 阅读 · 0 评论 -
求二叉树中节点的最大距离
问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。只需要计算这两个情况的路径距离,并取其大者,就是该二叉树的...原创 2018-02-13 18:13:59 · 526 阅读 · 0 评论 -
输入一颗二元查找树,将该树转换为它的镜像
输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。例如给定下列的输入:然后有如下的输出:解法一:递归首先交换根节点8的左右子树,10,6的左右子树顺序不变,然后交换根节点6的左右子节点,直到左右子节点为空为止。代码:BSTreeNode*digui(BSTreeNode*pRoot) { if(pRoot!=NULL) { ...原创 2018-02-13 18:16:06 · 465 阅读 · 0 评论 -
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \ 6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 11解法:我们利用队列来解决这个问题。对列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作...原创 2018-02-13 18:19:30 · 488 阅读 · 0 评论