中序线索二叉树递归创建算法

 

void InThread(TBTNode *p, TBTNode *&pre) {
	if (p != NULL) {
		InThread(p->lchild, pre);
		if (p->lchild == NULL) {
			p->lchild = pre;
			p->ltag = 1;
		}
		if (pre != NULL && pre->rchild == NULL) {
			pre->rchild = p;
			pre->rtag = 1;
		}
		pre = p;
		InThread(p->rchild, pre);
	}
}
void CreateInThread(TBTNode *root) {
	TBTNode *pre = NULL;
	if (root != NULL) {
		InThread(root, pre);
		pre->rchild = NULL;//pre point to the last node
		pre->rtag = 1;//中序遍历的最后一个结点没有右孩子
	}
}

 

你可能感兴趣的:(Data,structure)