数据结构和算法
文章平均质量分 73
yuanyuanmmm
叛逆 不羁 乖巧的矛盾体
展开
-
求二叉树结点最大距离
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。实际上就是求树的直径。若采用“动态规划方法”思想,会将该问题分解成“具有最大距离两点间的路径是否经过根节点”两个子问题,然后再对这两个子问题求解判断。实际上,不必这么麻烦。距离最远的两点必然在以某个节点A为根的子树上,它们间的路径必然经过该子树转载 2017-07-30 12:01:42 · 537 阅读 · 0 评论 -
数组翻转
cpp] view plain copy print? #include void Reverse(int *p , int size) { int i , tmp; for(i = 0 ; i { tmp = p[i] ; p[i] = p[size-1转载 2017-07-30 16:31:30 · 360 阅读 · 0 评论 -
单词翻转
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 例如输入字符串"I am a student.",则输出"student. a am I"。 还可以采用栈的做法。将字符从后面开始,压入栈中,当遇到空字符或者到末尾时,就出栈。栈空的时候又继续压 这样一直到那个串为空即可。 1 #include 2 #includestring> 3 #in转载 2017-07-30 17:40:29 · 319 阅读 · 0 评论 -
逻辑与
求下面函数的返回值 int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8 思路:将x转化为2进制,看含有的1的个数。转载 2017-08-01 18:16:30 · 432 阅读 · 1 评论