我被分配了一个关于将列表转换为二进制树的家庭作业,我无法理解这个概念,我一直在阅读示例,但我无法弄清楚如何实际使用它。我需要一个左节点指针,信息和右指针。我找到了要添加的代码,但不了解如何使用它。
class Node{
int data;
Node left;
Node right;
public Node(int data) {
this.data = data;
left = null;
right = null;
}
}
这就是我需要做的所有程序,我不明白我是怎么想为每个节点分配左右值。我插入的每个节点都需要一个名称吗?我的作业有伪代码,例如
y = avail; //whats avail? this is my first line
treeRoot = y;
info(y) = x[2]; //(im inputing from an array) how do i assign this?
lptr(y)= z; // (left pointer of y gets z) z maybe a pointer?
答案 0 :(得分:0)
您不需要更多名字。树结构表明每个节点都包含所有直接后代的POINTERS。因此,任何节点都可以通过路径找到,看起来像root->left->left->right->left->right
。因此,对于每个节点,您将实例化类Node
的新实例。然后通过某种算法,您应该找到哪个列表项将成为root。然后,您会将列表中的相应项目分配到root.left = new Node(list[someIndex])
或root.right = new Node(list[someIndex])
。所以现在root.right
也是Node
的实例。所以它也有左右。等等。