1. 程式人生 > >7-8 輸出二叉樹中值為x的節點的所有祖先

7-8 輸出二叉樹中值為x的節點的所有祖先

//輸出二叉樹中值為x的節點的所有祖先
#include "btree.cpp"
bool ancestor(BTNode *b,ElemType x)
{
	if (b==NULL)
		return false;
	else if (b->lchild!=NULL && b->lchild->data==x || b->rchild!=NULL && b->rchild->data==x)
	{
		printf("%c ",b->data);
		return true;
	}
	else if (ancestor(b->lchild,x) || ancestor(b->rchild,x))
	{
		printf("%c ",b->data);
		return true;
	}
	else
		return false;
}
int main()
{
	BTNode *b;
	ElemType x='G';
	CreateBTree(b,"A(B(D(,G)),C(E,F))");
	printf("b:");DispBTree(b);printf("\n");
	printf("結點%c的所有祖先:",x);
	ancestor(b,x);printf("\n");
	DestroyBTree(b);
	return 1;
}