如何解决查找具有自定义定义的相似树如果每个树级别的节点总数等于或相似
我想找出两个给定树的大小是否相似。 (类似大小是指每棵树在树的每个级别上具有相同数量的节点)
打字稿或Javascript
树被定义为
class TreeNode {
nodeValue: string;
rightNode?: TreeNode;
leftNode?: TreeNode;
constructor(nodeValue: string,rightNode?: TreeNode,leftNode?: TreeNode) {
this.nodeValue=nodeValue;
this.rightNode=rightNode;
this.leftNode=leftNode;
}
}
我的方法:
function similarsizedTrees(firstTree:TreeNode,secondTree: TreeNode): boolean {
for(let i:number =0; i<4;i++){
let tree1Count :number = nodeAteachLevel(firstTree,i);
let tree2Count :number = nodeAteachLevel(secondTree,i);
if (tree1Count !== tree2Count){
return false
}
}
return true;
}
function nodeAteachLevel(node : TreeNode,curr : number,desired:number):number {
//This will also work as a breaking condition for recursive call
if(node == null ){
return 0;
}
if (curr == desired) {
return 1;
}
// console.log(node)
return (nodeAteachLevel(node.leftNode,curr +1,desired) +
nodeAteachLevel(node.rightNode,desired));
}
初始化树
let firstTree : TreeNode = new TreeNode("10");
firstTree.leftNode = new TreeNode("5");
firstTree.rightNode = new TreeNode("15")
firstTree.leftNode.leftNode = new TreeNode("4")
firstTree.leftNode.rightNode = new TreeNode("6")
firstTree.rightNode.leftNode = new TreeNode("11")
firstTree.rightNode.leftNode.rightNode = new TreeNode("12")
let secondTree : TreeNode = new TreeNode("10");
secondTree.leftNode = new TreeNode("5");
secondTree.rightNode = new TreeNode("15")
secondTree.leftNode.leftNode = new TreeNode("4")
secondTree.leftNode.rightNode = new TreeNode("6")
secondTree.rightNode.leftNode = new TreeNode("11")
secondTree.rightNode.leftNode.rightNode = new TreeNode("12")
console.log(similarsizedTrees(firstTree,secondTree))
但是这给我在nodeAteachLevel()的return语句中的错误 也i
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。