思路就跟输出二叉树一样的,只不过这次是找节点
文章目录
查找节点
//找一个值为x的节点
BiThrTree findElement(BiThrTree T, ElementType x){
if (!T)
return NULL;
if (T->data == x){
return T;
}
else
{
BiThrTree temp;
//先看下左边找到了没有
temp = findElement(T->LeftTreeNode, x);
//没有找到那就看看右边
if(!temp){
return findElement(T->RightTreeNode, x);
}
//这个跟输出不一样,得有个指针来接收。
return temp;
}
return NULL;
}
输出此节点所有的父节点
递归的魅力,真是巧妙
//打印X节点所有父节点
int putRootofx(BiThrTree T, ElementType x){
//没有就返回0
if(!T)
return 0;
//找到了就返回1
if(T->data == x){
return 1;
}
//这个节点有值但不是要找到那个,那就往它的子节点下面看看
if(T){
//只要子节点里面有符合条件的,那就将其输出出来
if(putRootofx(T->LeftTreeNode, x) || putRootofx(T->RightTreeNode, x)){
printf("%c ",T->data);
return 1;
}
}
return 0;
}