摘要: 1. 简述 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。2. 思路 这道题是寻找最大一个距离,还是相对容易的,递归是比较好像到的。对于每个子树来说,要么最大距离在根的左子树中,要么在根的右子树中,要么是通过根的情况。 Height(NULL) = 0, Height(node) = Max{Height(node->left)+1,Height(node->right)+1}。 Max(NULL) = 0; Max(node) = Max{Max(node->le 阅读全文
posted @ 2011-09-10 11:55 xiaodongrush 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 假设有这样一个拥有3个操作的队列: 1. EnQueue(v):将v加入队列中2. DeQueue:使队列中的对首元素删除并返回此元素 3. MaxElement:返回队列中的最大元素 请设计一个数据结构和算法,让MaxElement操作的时间复杂度尽可能的低。2. 思路起初没仔细看,还以为与此前的自定义栈-pop-push-min-时间复杂度都为O(1) 是一样的,后来才发现不是一回事,有差别的。对于栈来说,我们可以的入栈和出栈不会影响辅助数组内的情况,假设当前N个元素,(为了说明简单,下标从1开始),辅助空间的F[1]记录的是A[1,1]内的最值位置,F[2]记录的是A[1,2 阅读全文
posted @ 2011-09-10 11:11 xiaodongrush 阅读(1908) 评论(0) 推荐(1) 编辑