gpt4 book ai didi

javascript - 使用 Javascript 编写一个比较两棵树的函数,如果它们在结构和值上相等则返回 true,否则返回 false

转载 作者:行者123 更新时间:2023-11-30 19:34:07 24 4
gpt4 key购买 nike

给定以下类:

class TreeNode {
constructor(data, left=null, right=null) {
this.data = data;
this.left = left;
this.right = right;
}
}

完成功能

const binaryTreeCompare = (a, b) => {};

比较由 TreeNodes a 和 b 定义的两棵树,如果它们在结构和值上相等则返回 true,否则返回 false。

样本测试

let assert = require('chai').assert;
var aNode = {val: 1, left: null, right: null};
var bNode = {val: 1, left: null, right: null};
var cNode = {val: 2, left: null, right: null};
describe("example test", () => {
it("Should return true for equal nodes", () => {
assert.equal(compare(aNode, bNode), true);
});
it("Should return false for non-equal nodes", () => {
assert.equal(compare(aNode, cNode), false);
});
});

到目前为止我做了什么

function compare(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);
}

它给我一个错误

如果 TreeNodes a 和 b 在结构和值上相等,我希望输出为真,否则为假。

最佳答案

它认为这就像比较两个对象。您可以创建自己的函数,使用递归比较两个嵌套对象。

var a = {val: 1, left: null, right: null};
var b = {val: 1, left: null, right: null};
var c = {val: 2, left: null, right: null};

function compObj(a,b){
if(typeof b !== "object" && b !== null) return false;
console.log(a,b)
if(Object.keys(a).length === Object.keys(b).length){
for(let key in a){
if(typeof a[key] === "object" && a[key] !== null){
let temp = compObj(a[key],b[key]);
if(!temp) return false;
}
if(a[key] !== b[key]) return false;
}
return true;
}
return false;
}

console.log(compObj(a,b))

关于javascript - 使用 Javascript 编写一个比较两棵树的函数,如果它们在结构和值上相等则返回 true,否则返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com