C 二叉樹查詢值為x的節點,並列印其所有的父節點
阿新 • • 發佈:2018-11-01
思路就跟輸出二叉樹一樣的,只不過這次是找節點
文章目錄
查詢節點
//找一個值為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;
}