问题描述
我想找出两个给定树的大小是否相似。 (类似大小是指每棵树在树的每个级别上具有相同数量的节点)
打字稿或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 (将#修改为@)