主类:二叉树
它包含根节点和二叉树构造函数
public class BinaryTree{
Node root;
BinaryTree (int depth){
this.root = new Node(depth);
root.generateTree(depth);
}
子类节点。
generateTree()方法在此类中定义但不起作用。
节点代表树的分支。
generateTree返回二叉树。
class Node{
final int LEAF = 1;
final int BALL = 2;
final int CANDLE = 3;
int depth;
int decoration;
String color;
boolean on;
Node left;
Node right;
Node(int depth){
this.depth = depth;
}
void setLeaf(){
decoration = LEAF;
}
void setBall(String color){
color = color;
}
void setCandle(boolean on){
on = on;
}
BinaryTree generateTree(int depth) {
if (depth == 0) {
return root;
}
else if (depth > 1) {
if (root.right == null){
root.right = new Node(depth-1);
root.left = new Node(depth-1);
}
for (int i=0; i < depth; i++){
Node node = new Node(depth);
node.right = new Node(depth-1);
node.left = new Node(depth-1);
}
}
generateTree(depth - 1);
}
}
}
答案 0 :(得分:0)
不要将BinaryTree作为输出返回,而是尝试使用只返回节点的方法:
private static Node generateTree (int depth) {
if (depth < 0) return null;
Node currentNode = new Node(depth);
if (depth > 0) {
currentNode.left = generateTree(depth-1);
currentNode.right = generateTree(depth-1);
}
return currentNode;
}
修改强>:
而不是将generateTree方法作为Node类的函数调用,您应该调用该函数并在构造函数中设置其返回值。
BinaryTree (int depth) {
this.root = generateTree(depth);
}