测试两棵二叉树是否相等
Test if two binary trees are equal
我知道这可能是重复的 post,但我会提交我自己的代码以供您注意。
我写了下面的递归过程,但我想优化它。
我想在发现与其他节点不同的节点时立即停止 treeCompare 方法,而不是比较所有节点。
在此先感谢您的帮助。
这是我的瘦节点class:
public class Node {
public Node father;
public Node left;
public Node right;
}
这是我的比较方法:
private boolean treeCompare(Node firstNode, Node secondNode) {
if (firstNode == null && secondNode == null)
return true;
else if (firstNode == null || secondNode == null)
return false;
boolean isLEquals = treeCompare(firstNode.left, secondNode.left);
boolean isREquals = treeCompare(firstNode.right, secondNode.right);
return firstNode.equals(secondNode) && isLEquals && isREquals;
}
private boolean treeCompare(Node firstNode, Node secondNode) {
if (firstNode == secondNode)
return true;
if (firstNode == null || !firstNode.equals(secondNode))
return false;
return treeCompare(firstNode.left, secondNode.left) && treeCompare(firstNode.right, secondNode.right);
}
我知道这可能是重复的 post,但我会提交我自己的代码以供您注意。 我写了下面的递归过程,但我想优化它。 我想在发现与其他节点不同的节点时立即停止 treeCompare 方法,而不是比较所有节点。
在此先感谢您的帮助。
这是我的瘦节点class:
public class Node {
public Node father;
public Node left;
public Node right;
}
这是我的比较方法:
private boolean treeCompare(Node firstNode, Node secondNode) {
if (firstNode == null && secondNode == null)
return true;
else if (firstNode == null || secondNode == null)
return false;
boolean isLEquals = treeCompare(firstNode.left, secondNode.left);
boolean isREquals = treeCompare(firstNode.right, secondNode.right);
return firstNode.equals(secondNode) && isLEquals && isREquals;
}
private boolean treeCompare(Node firstNode, Node secondNode) {
if (firstNode == secondNode)
return true;
if (firstNode == null || !firstNode.equals(secondNode))
return false;
return treeCompare(firstNode.left, secondNode.left) && treeCompare(firstNode.right, secondNode.right);
}