我已经编写了一个代码来查找二叉树中节点的最小共同祖先,但它似乎返回null
而不是 LCA。
我的算法如下。
- 在树的左右分支中递归查找祖先
左树和右树在 LCA 中具有匹配元素的节点。
public class LCA { public static BinaryTreeNode findLCA( BinaryTreeNode root, BinaryTreeNode node1 , BinaryTreeNode node2) { if (root == null) { return null; } BinaryTreeNode left = root.getLeft(); BinaryTreeNode right = root.getRight(); if (left != null && (left == node1 || left == node2)) { return root; } if (right != null && (right == node1 || right == node2)) { return root; } if (( findLCA(left, node1, node2) != null) && (findLCA(right, node1, node2) != null)) { return root; } return null; }}
这段代码可能有什么问题?