【发布时间】:2014-10-30 03:54:06
【问题描述】:
该方法应该接受两个参数,一个用于深度,一个用于树根的整数值。例如:对于任何给定的 N,返回深度为 N 的完整二叉搜索树的根引用,以便节点存储整数 1、2、...、2 N+1 – 1。我正在努力做到这一点。这是我所拥有的:
public static BinaryNode BSTFactory(int top,int depth) {
BinaryNode root=new BinaryNode(null,null,top);
BinaryNode leftChild,rightChild;
if(depth==0){
return root;
}
if(depth==1){
//create 2 children left and right
leftChild=new BinaryNode(null,null,top-1);
rightChild=new BinaryNode(null,null,top+1);
root=new BinaryNode(rightChild,leftChild,top);
return root;
}
if(depth>1){
leftChild=BSTFactory(top-1,depth-1);
rightChild=BSTFactory(top+1,depth-1);
root=new BinaryNode(rightChild,leftChild,top);
return root;
}
return root;
}
【问题讨论】:
-
会发生什么?你期待什么?
-
该方法适用于 2 个基本情况,即深度为 0 和 1,但不适用于更大的情况。我一定是把递归搞砸了,但我似乎无法弄清楚它是什么。
-
你知道如何使用调试器吗?您只需单步执行代码并观察会发生什么。
-
我现在可以使用了,谢谢。
标签: java recursion binary-tree