对二叉查找树找到两个节点的最小公共祖先:可以根据二叉查找树的性质:左子树的节点值比根节点的值小,右子树的节点值比根节点值大 以下是二叉树节点的类的定义 ...
分类:
其他好文 时间:
2017-05-24 19:20:48
阅读次数:
166
1. 节点个数 2. 叶子个数 3. 第K层节点个数 4. 二叉树的最低公共节点,判断节点在左右两侧,则根节点(可能为子树根)为最小公共节点,否则在左子树或右子树中递归查找公共节点 ...
分类:
其他好文 时间:
2017-05-18 01:15:16
阅读次数:
180
一、什么是“公共语言规范”(CLS) 定义了一个最小公共集,任何编译器只有支持这个功能集,生成的类型才能兼容其他符合CLS、面向CLR的语言生成的组件 二、CLS规则 类型的每个成员要么是字段(数据),要么是方法(行为),为简化编程,语言往往提供了额外的抽象 该类型还有另一些节点未列出,包括.cla ...
分类:
编程语言 时间:
2017-01-22 21:21:52
阅读次数:
238
题目如上图。给定我们一个二叉树和其中的两个结点,让我们找出这两个结点的最小公共祖先,如上图中的7、4最小公共祖先是2。题目并不复杂。我的思路: 要找到两个结点的最小公共祖先,肯定要先找到这两个结点吧,那么肯定得遍历(我用的是按层遍历)。然而遍历找到这两个结点的位置了,我们却“丢失”了他们祖先的信息....
分类:
其他好文 时间:
2015-11-22 23:23:26
阅读次数:
150
作为一个工程党,在各路竞赛大神的面前总会感到自己实力的捉急。大神总是能够根据问题的不同,轻而易举地给出问题的解法,然而我这种渣渣只能用所谓的”直观方法“聊以自慰,说多了都是泪啊。However,正视自己理论方面的不足,迎头赶上还是必要的,毕竟要真正踏入业界,理论知识是不能少的啊。(比如各种语言的Ha...
分类:
其他好文 时间:
2015-11-22 00:21:07
阅读次数:
185
今天做了两个二叉树的题目, 挺简单的, 不用调试, 直接在提交框上敲完提交, 直接就通过了.
第一个题目是求二叉查找树的公共祖先, 因为是排序的, 所以很好做.
具体思路如下:
1 如果两个节点都比当前节点小, 那公共祖先必然是当前节点的左子树上, 所以递归左子树;
2 如果两个节点都比当前节点大, 那么同上, 递归右子树;
3 如果两个节点有一个为当前节点, 则当前节点为公共节点; 如...
分类:
其他好文 时间:
2015-08-07 00:21:15
阅读次数:
168
题目意思就是找一棵按上面链接所示的树对应的上面的两个点的最小公共祖先(LCP,Least Common Father),按照比较大小来依次返回自己的父亲节点就行了。具体看代码:getfather(a)函数是找父亲的代码#include #include #include #include...
分类:
其他好文 时间:
2015-07-20 12:42:00
阅读次数:
212
有一个普通二叉树,AB分别为两个子节点,求AB最近(深度最浅)的公共父节点。
此题仍然是一个老题,有着多种解决方法,本文针对其中三种方法来进行分析总结。
这三种方法分别是:递归法,tarjan离线算法,RMQ在线算法。
递归法
递归法比较直观简单,思路如下:
首先判定当前节点root是否是A节点或者B节点,若是的话直接返回该节点
若不是,分别对root节点的左右子树进行递归查找最小公共...
分类:
其他好文 时间:
2015-07-19 13:36:58
阅读次数:
1468
思路:当遇到一个结点是返回1,当左右子树都返回1的时候,即最小公共父节点。//二叉树的数据结构
typedef struct MyStruct
{
char data;
struct MyStruct *leftChild;
struct MyStruct *rightChild;
}Node, *Tree;
//查找方法
int findFirstFather(Tree r...
分类:
其他好文 时间:
2015-04-14 02:02:27
阅读次数:
165