私は学校でこれを行う方法を学びました。これが私のやり方です。私は覚えていないウェブサイトからそれを学んだが、私はその中にコメントを残した。
boolean isMirror(Node node1, Node node2)
{
// if both trees are empty, then they are mirror image
if (node1 == null && node2 == null)
return true;
// For two trees to be mirror images, the following three
// conditions must be true
// 1 - Their root node's key must be same
// 2 - left subtree of left tree and right subtree
// of right tree have to be mirror images
// 3 - right subtree of left tree and left subtree
// of right tree have to be mirror images
if (node1 != null && node2 != null && node1.key == node2.key)
return (isMirror(node1.left, node2.right)
&& isMirror(node1.right, node2.left));
// if neither of the above conditions is true then
// root1 and root2 are mirror images
return false;
}
boolean isSymmetric(Node node)
{
// check if tree is mirror of itself
return isMirror(node, node);
}
最初は、ブール値を返すことをお勧めします。このコードは特別なことをしていないようで、 'root == null 'のときに例外をスローします。 –
[バイナリツリーが鏡像か対称かチェックしてください](http://stackoverflow.com/questions/) 8436623 /バイナリツリーのチェックが鏡像か対称か) –