查找具有自定义定义的相似树如果每个树级别的节点总数等于或相似

问题描述

我想找出两个给定树的大小是否相似。 (类似大小是指每棵树在树的每个级别上具有相同数量的节点)

打字稿或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 (将#修改为@)