バイナリツリーでノードの最も一般的でない祖先を見つけるためのコードを作成しました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; }}
このコードの問題は何でしょうか?