#include #includeusing namespace std;
typedef char elemtype;
const int maxsize=100;
typedef struct nodebtnode;
//建立二叉樹
void createbtree(btnode *&b,elemtype *str)
}} }}
//計算二叉樹的所有結點數
int nodes(btnode *b)
//輸出二叉樹的所有葉子結點
void displeaf(btnode *b)
} //求二叉樹中結點值為x的結點的深度
int level(btnode* b,elemtype x,int h)
} //求二叉樹中第k層的結點個數
void lnodenum(btnode* b,int h,int k,int &n)
}} //輸出值為x的結點的所有祖先
bool ancestor(btnode* b,elemtype x)
else return false;
}}}
int main() {
elemtype str="a(b(d(,g)),c(e,f))";
btnode* b;
createbtree(b,str);
elemtype x;
cin>>x;
ancestor(b,x);
/* int k,n=0;
cin>>k;
lnodenum(b,1,k,n);
cout<>x;
int h=level(b,x,1);
if(h==0) cout<<"二叉樹中沒有節點值為"《不妥之處,請多多指教。
《資料結構教程》(第5版)李春葆 學習筆記(二)
include include includeusing namespace std typedef char elemtype 宣告鏈棧的型別 typedef struct linknodelinkstnode 初始化棧 void initstack linkstnode s 銷毀棧 void d...
《資料結構教程》(李春葆 主編)課後習題 2 4
2.4 設計乙個演算法,將乙個帶頭節點的資料域依次為a1,a2,an n 3 的單鏈表的所有節點逆置,即第乙個節點的資料域變為an,最後乙個節點的資料域變為a1。思路 我是直接在原煉表上操作,當然也可以建立乙個陣列儲存鍊錶的資料,然後再倒序放回原鍊錶。答案 1 void invert linklis...
資料結構教程 李春葆版(總結)之排序 交換排序
本文的主要內容來自資料結構教程 李春葆版,由 你是木頭人 博主進行總結。性質 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時即進行交換,直到沒有反序的元素為止。氣泡排序 穩定 typedef struct rectype void bubblesort rectype r,int n rect...