我正在尝试实现一棵二叉树(如果它是通用二叉树或二叉搜索树,则并不重要),并且在创建节点并将其链接到树中的函数上遇到了一些问题。
这是我到目前为止写的代码:
class BinaryTree {
class Node {
char data;
Node* leftChild;
Node* rightChild;
Node(char d, Node* lc, Node* rc):
data(d), leftChild(lc), rightChild(rc) {}
} *head;
int treeSize;
public:
BinaryTree(): head(0), treeSize(0) {}
// totally wrong code
void createNode(char dat) {
if (head->data < dat)
head->leftChild = new Node(dat, 0, 0);
if (head->rightChild == 0)
head->rightChild = new Node(dat, 0, 0);
if (head == 0) {
head = new Node(dat, head, head);
}
}
};
好吧,我想用链表来实现二叉树,但在这种情况下,问题在于head
指针将指向最后添加的节点之一,而不是根。以这种方式使用链表的另一个问题可能是找到要添加新节点的节点的空子节点。
有人可以帮助我,也许可以建议一种更好的方法来实现二叉树?
注意:我计划将这个类设为 a template
, char 只是为了即时试用。