
已知二叉树的两个节点,要求找到二者最近的祖先。
先遍历其中一个节点,保存它到根节点的所有节点,再看另外一个节点的祖先路径与之重叠部分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public static TreeNode searchNearestAncester(TreeNode node1, TreeNode node2) { List list = new ArrayList(); list.add(node1); if (node1.parent != null) { while (node1.parent != null) { list.add(node1.parent); node1 = node1.parent; } } if (list.indexOf(node2) != -1) return node2; if (node2!= null) { while (node2.parent!= null) { node2 = node2.parent; if (list.indexOf(node2) != -1) return node2; } } return null; }
|
近期评论