读书人

查寻任意两个节点的公共父节点

发布时间: 2012-12-19 14:13:14 作者: rapoo

查找任意两个节点的公共父节点
基本思路是对需要查找的节点赋权值为1,其它节点权值为0.那么只要找到一个节点的左右权值都不为1的点就是需要查找的公共父节点。

static class Node {String value;Node left;Node right;}static Node parent;public static int findParent(Node root, Node first, Node second) {if (root == null || parent != null) {// Accelerate checkreturn 0;}int value = 0;if (root == first || root == second) {// find the nodevalue = 1;}value += findParent(root.left, first, second);value += findParent(root.right, first, second);if (value == 2) {// find the common parent of the first and second nodeparent = root;value = 0;}//return value;}


这种方法可以推广到查到n个节点的公共父节点,对每一个需要查找的节点赋值为1即可

读书人网 >编程

热点推荐