首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

满二叉树,寻找任意给出的两个节点的最近的父节点,该怎么解决

2012-03-02 
满二叉树,寻找任意给出的两个节点的最近的父节点满二叉树,寻找任意给出的两个节点的最近的父节点[解决办法

满二叉树,寻找任意给出的两个节点的最近的父节点
满二叉树,寻找任意给出的两个节点的最近的父节点

[解决办法]
这个问题不会,所以不能给你答案。哈哈
[解决办法]
我曾想过这样一个方法,一个节点这样表示,从根节点开始,根节点用1表示,然后,左节点为10,右节点为11,即左节点在其父节点后加0,右节点在其父接后加1,用这种方法表示的节点就很容易解决你的问题了,找用来表示两个节点的字符串的最大匹配,那个节点就是你想要的了。
[解决办法]
不过我还不知道怎么实现这种表示二叉树节点的方法。
[解决办法]
二叉树中,判断自己属于父节点的左子节点还是右子节点很容易吧,那就得到了 0 或 1,一直逆推到根节点就得到了路径。两个路径求最大相同前缀就得到了共同最近的父节点的路径,按路径找节点。
[解决办法]
这个跟你的数据结构直接相关阿,如果用类或结构的话只有先遍历一个节点到根节点全部路径,再找到另一个节点的parent,与前一节点路径上所有节点比较,如果都不等,就求parent的parent继续,直到根节点。
如果用数组来表示树就简单多了,假设两个节点的下标是m,n只需要
if (M == N)
return M;
else if(M>N)
M/=2;
else 
N/=2;
[解决办法]
分2种情况:1.你的树每个元素都有指向父节点的指针,那whumr 的办法感觉很好,不足位的情况(很可能得到的两个值位数不一样多)一个用0与掉,另一个用1或掉,然后两个值做与,就有结果了;2.典型情况是每个元素只有指向子结点的指针,那怎么办呢。恐怕还得遍历先找出一个节点吧(记录其各级父节点),然后再在找到这个节点上按层遍历吧,直到找到另一个节点(按哪层找到的则这就是最近的了)。

热点排行