如何在 JavaScript 中编写一个函数来比较由 TreeNodes a 和 b 定义的两棵树?

las*_*bwa 1 javascript algorithm binary-tree binary-search-tree data-structures

我正在尝试编写一个 JavaScript 函数,该函数比较由 sa 和 b 定义的两个二叉树TreeNode,如果它们在结构和值上相等则返回 true,否则返回 false。

例如比较两个二叉树的值和结构的示例

给定以下课程:

class TreeNode {
  constructor(data, left=null, right=null) {
    this.data = data;
    this.left = left;
    this.right = right;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止尝试编写的代码,将 TreeNode a 和 b 进行映射。

const binaryTreeCompare = (a, b) => {
  if(a==null && b==null){
    return true;
  }else if(a!=null && b!=null){
    return(
      a.data == b.data && binaryTreeCompare(a.left, b.left) && binaryTreeCompare(a.right, b.right)
    );
  }
    else return false;
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为 true 或 false,但这就是我得到的:

ReferenceError: compare is not defined
    at Context.it (test.js:116:16)
Run Code Online (Sandbox Code Playgroud)

las*_*bwa 8

经过认真研究后我自己的问题的解决方案如下面的代码片段所示。

function compare(a, b){
  if (!a && !b) {
      return true;
   } else if (!a || !b) {
      return false;
   } else {
      return a.val === b.val && compare(a.left, b.left) && compare(a.right, b.right);
   }
}
Run Code Online (Sandbox Code Playgroud)