數(shù)據(jù)結(jié)構(gòu)拓展習(xí)題:二叉樹打印值為x結(jié)點的所有祖先
2022-05-27 21:49 作者:回到唐朝當(dāng)少爺 | 我要投稿
題目:假設(shè)二叉樹bt采用二叉鏈表存儲,在二叉樹bt中查找值為x的結(jié)點,試編寫算法打印值為x的結(jié)點的所有祖先,假設(shè)值為x的結(jié)點不多于一個。



typedef char TElemType;
typedef struct BiTNode
{
?????? TElemType data;
?????? struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
int PrintAncestors(BiTree T, TElemType x)
{
?????? if (T == NULL)//先判斷二叉樹是否為空
????????????? return 0;
?????? if (T->data == x) //判斷二叉樹根節(jié)點是否為所要查找的結(jié)點
????????????? return 1;
//如果一棵二叉樹的左孩子或右孩子里面有所要查詢的結(jié)點
//那么該二叉樹的根節(jié)點就是我們要找的值為x的結(jié)點的祖先
?????? if (PrintAncestors(T->lchild, x) || PrintAncestors(T->rchild, x))
?????? {
????????????? printf("%d ", T->data);
????????????? return 1;
?????? }
?????? else
????????????? return 0;
}
標(biāo)簽: