查寻任意两个节点的公共父节点
查找任意两个节点的公共父节点
基本思路是对需要查找的节点赋权值为1,其它节点权值为0.那么只要找到一个节点的左右权值都不为1的点就是需要查找的公共父节点。
这种方法可以推广到查到n个节点的公共父节点,对每一个需要查找的节点赋值为1即可
基本思路是对需要查找的节点赋权值为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 check return 0; } int value = 0; if (root == first || root == second) { // find the node value = 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 node parent = root; value = 0; } // return value; }
这种方法可以推广到查到n个节点的公共父节点,对每一个需要查找的节点赋值为1即可