Java 二叉树生成的时间复杂度
有一种方法可以构建一个二叉树,其中有N个完整的级别和on 每个级别I都有两个节点,其信息部分等于I。根据构建的树的级别数,时间复杂度是多少Java 二叉树生成的时间复杂度,java,time-complexity,binary-tree,Java,Time Complexity,Binary Tree,有一种方法可以构建一个二叉树,其中有N个完整的级别和on 每个级别I都有两个节点,其信息部分等于I。根据构建的树的级别数,时间复杂度是多少 private SimpleTreeNode fromNDigitToNode(int x,int k) throws Exception { IndexWrapper iw = new IndexWrapper(); T parentValue = readValue((k-x+1)+"",iw); Simp
private SimpleTreeNode fromNDigitToNode(int x,int k) throws Exception {
IndexWrapper iw = new IndexWrapper();
T parentValue = readValue((k-x+1)+"",iw);
SimpleTreeNode parentNode = new SimpleTreeNode(parentValue);
SimpleTreeNode leftNode = new SimpleTreeNode(parentValue);
SimpleTreeNode rightNode = new SimpleTreeNode(parentValue);
if(x<=1)return parentNode;
int z = --x;
parentNode.left = fromNDigitToNode(z,k);
parentNode.right = fromNDigitToNode(z,k);
return parentNode;
}
我认为你的代码有缺陷。创建leftNode和rightNode,但不使用它们。此外,parentNode.left和parentNode.right都是使用相同的参数创建的。对吗 我不知道您的IndexWrapper用于什么以及readValue()的作用 最大的问题是:这永远不会停止。例如,如果x<0,则不检查。所以你用x=1来称呼它。然后递归两次,用x=0调用它,然后用x=-1调用它,然后永远重复 所以我要说这是秩序(永远)
我建议您实际运行代码,测试代码,然后计算其复杂性。您能自己演示一下解决这个问题的方法吗?发布的两个函数根本没有交互作用。对不起。我的错误。代码已编辑,所以,正好有2^N项?你什么时候开始的?
public void fromNDigit(String Ndigit) throws Exception{
int digit = Integer.parseInt(Ndigit);
IndexWrapper iw = new IndexWrapper();
SimpleTreeNode root = fromNDigitToNode(digit,digit);
this.root = root;
}
}