今天看到学堂的05-d-2里面讲到insertLC,所以又复习了一下This pointer,constructor。
二叉树里面最基本元素:BinNode的constructor是这样的:
BinNode(T e, BinNodePosi(T) p = NULL, BinNodePosi(T) lc = NULL, BinNodePosi(T) rc = NULL,
int h = 0, int l = 1, RBColor c = RB_RED)
: data(e), parent(p), lChild(lc), rChild(rc), height(h), npl(l), color(c) { }
template <typename T> //将e作为当前节点的左孩子插入二叉树
BinNodePosi(T) BinNode<T>::insertAsLC(T const& e) { return lChild = new BinNode(e, this); } //那么这里的This即是使用insertLC method的object。
用法是:
BinNodePosi node1, node2; // two nodes, node2 is the LChild of node1
node2 = node1.insertLC(100); //LChild's value is declared as 100
data(e), parent(p), lChild(lc), rChild(rc), height(h), npl(l), color(c)
所以insertLC只需要修改Lchild的value及其对应的parent。