可以按照中序遍历的顺序将两个二叉搜索树转化为两个有序数组,然后再比较这两个数组是否相等即可。如果相等,则两个二叉搜索树相同,否则不相同。
代码示例:
public boolean compareBST(TreeNode root1, TreeNode root2) {
List list1 = new ArrayList<>();
inorderTraversal(root1, list1); // 中序遍历得到第一个二叉搜索树的有序数组
List list2 = new ArrayList<>();
inorderTraversal(root2, list2); // 中序遍历得到第二个二叉搜索树的有序数组
return list1.equals(list2); // 比较两个数组是否相等
}
private void inorderTraversal(TreeNode node, List list) {
if (node == null) {
return;
}
inorderTraversal(node.left, list);
list.add(node.val);
inorderTraversal(node.right, list);
}