线索二叉树的建立与遍历

struct threadedtree{
	int leftthread;
	struct left;
	int rightready;
	struct right;
	int n;
}

struct threadedtree *pre;
void InThreading(threadedtree *t){
	if(t){
		InThreading(t->left);
		if(!t->left){
			t->leftready = 1;
			t->left = pre;
		}
		else t->leftready = 0;
		if(!pre->right){
			pre->right = t;
			pre->rightready = 1;
		}
		else pre->rightready = 0;
		pre = t;
		InThreading(p->right);
	}
}

struct threadedtree* Inorder_threading(struct threadedtree *t){
	struct threadedtree* head;
	head = (struct threadedtree*)malloc(sizeof(struct threadedtree));
	head->right = head;
	head->rightready = 0;
	head->leftready = 0;
	if(!t) head->left = head;
	else{
		head->left = t;
		pre = head;
		InThreading(t);
		pre->right = head;
		pre->right = 1;
	}
}
void Inordertraversal(struct threadedtree *t){
   while(t->right != t){
   	while(!t->leftready)
   		t = t->left;
   	    visit(t);
   	    while(t->rightready&&t->right!=t){
   	    	t = t->right;
   	    	visit(t->right);
   	    }
   	    t = t->right
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值