




已閱讀5頁,還剩174頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.4 樹和森林,6.4.1 樹的存儲(chǔ)結(jié)構(gòu) 6.4.2 森林與二叉樹的轉(zhuǎn)換 6.4.3 樹和森林的遍歷,6.4.1 樹的存儲(chǔ)結(jié)構(gòu),雙親表示法 孩子表示法 孩子兄弟表示法,雙親表示法,數(shù)組下標(biāo),找雙親易,找孩子難,雙親表示法,#define MAX_TREE_SIZE 100 typedef struct PTNode TElemType data; int parent; /雙親位置域 PTNode; typedef struct PTNode nodesMAX_TREE_SIZE; int n; /結(jié)點(diǎn)數(shù) PTree;,孩子表示法,data,child1,child2,childd,data,child1,child2,childd,degree,n個(gè)結(jié)點(diǎn)度為k的樹中有 個(gè)空鏈域,n(k-1)+1,nk-(n-1)=,節(jié)省空間,但操作不便,孩子表示法,孩子鏈表,找孩子易 找雙親難,孩子表示法,A,B,C,D,R,E,F,G,H,K,0,1,2,3,4,5,6,7,8,9,4,4,4,0,-1,0,2,6,6,6,孩子鏈表,雙親位置,找孩子易 找雙親也易,孩子表示法,typedef struct CTNode/孩子結(jié)點(diǎn) int child; struct CTNode *next; *ChildPtr; Typedef struct TElemType data; ChildPtr firstchild; /孩子鏈表頭指針 CTBox; typedef struct CTBox nodesMAX_TREE_SIZE; int n, r; /結(jié)點(diǎn)數(shù)和根的位置 CTree;,孩子兄弟表示法,typedef struct CSNode TElemType data; struct CSNode *firstchild; /指向結(jié)點(diǎn)的第1個(gè)孩子 struct CSNode *nextsibling; /指向第1個(gè)孩子的右兄第 CSNode, *CSTree;,孩子兄弟表示法,易于實(shí)現(xiàn)各種操作,6.4.2 森林與二叉樹的轉(zhuǎn)換,typedef struct CSNode TElemType data; struct CSNode *firstchild,*nextsibling; CSNode,*CSTree;,typedef struct BiNode TElemType data; struct BiNode *lchild,*rchild; BiNode,*BiTree;,樹的孩子兄弟表示,二叉樹的二叉鏈表示,樹,二叉樹,對(duì)應(yīng),森林轉(zhuǎn)換成二叉樹,二叉樹轉(zhuǎn)換成森林,6.4.3 樹和森林的遍歷,樹的遍歷 森林的遍歷,樹的遍歷,先根(次序)遍歷樹 (1)訪問樹的根結(jié)點(diǎn) (2)依次先根遍歷樹的每棵子樹,A B C D E,后根(次序)遍歷樹 (1)依次后根遍歷樹的每棵子樹 (2)訪問樹的根結(jié)點(diǎn),B D C E A,1森林中第一棵樹的根結(jié)點(diǎn);,2森林中第一棵樹的子樹森林;,3森林中其它樹構(gòu)成的森林。,森林由三部分構(gòu)成:,森林的遍歷,A,B,C,D,E,F,G,H,I,J,森林的遍歷,先序遍歷森林 若森林為非空,則按下述規(guī)則遍歷之 (1)訪問森林中第一棵樹的根結(jié)點(diǎn) (2)先序遍歷森林中第一棵樹的子樹森林; (3)先序遍歷除去第一棵樹之后剩余的樹構(gòu)成的森林,森林的遍歷,中序遍歷森林 若森林為非空,則按下述規(guī)則遍歷之 (1)中序遍歷森林中第一棵樹的子樹森林; (2)訪問森林中第一棵樹的根結(jié)點(diǎn) (3)中序遍歷除去第一棵樹之后剩余的樹 構(gòu)成的森林,森林的遍歷,先序序列,A B C D E F G H I J,中序序列,B C D A F E H J I G,樹的遍歷和二叉樹遍歷的對(duì)應(yīng)關(guān)系 ?,先根遍歷,后根遍歷,樹,二叉樹,森林,先序遍歷,先序遍歷,中序遍歷,中序遍歷,樹的遍歷及應(yīng)用,孩子兄弟表示 樹的遍歷算法 求樹的深度 求樹的葉子結(jié)點(diǎn)數(shù) 建立樹的孩子兄弟鏈表存儲(chǔ)結(jié)構(gòu) 孩子鏈表結(jié)構(gòu) 孩子鏈表結(jié)構(gòu)的遍歷 根據(jù)孩子鏈表建立孩子兄弟結(jié)構(gòu),R,A,D,B,E,F,H,K,C,G,樹的先根(次序)遍歷,R,A,D,B,E,F,H,K,C,G,Status PreOrderTraverseTree(CSTree T, Status(*Visit)(TElemType e) if(!T) return OK; /若T為空樹,則直接返回 Visit(T-data);/訪問根結(jié)點(diǎn) PreOrderTraverseTree(T-firstchild,Visit); PreOrderTraverseTree(T-nextsibling,Visit) ; return OK; /PreOrderTraverse,樹的先根(次序)遍歷,R,A,D,B,E,F,H,K,C,G,p=T-firstchild,p=p-nextsibling,for(p=T-firstchild; p ; p=p-nextsibling) visit(p-firstchild);,樹的先根(次序)遍歷,R,A,D,B,E,F,H,K,C,G,Status PreOrderTraverseTree1(CSTree T, Status(*Visit)(TElemType e) if(!T) return OK; /若T為空樹,則直接返回 Visit(T-data);/訪問根結(jié)點(diǎn) for(p=T-firstchild; p; p=p-nextsibling) PreOrderTraverseTree1(p-firstchild,Visit); return OK; /PreOrderTraverseTree1,R,A,D,B,E,F,H,K,C,G,樹的后根(次序)遍歷,R,A,D,B,E,F,H,K,C,G,Status PostOrderTraverseTree(CSTree T, Status(*Visit)(TElemType e) if(!T) return OK; /若T為空樹,則直接返回 PostOrderTraverseTree(T-firstchild,Visit); PostOrderTraverseTree(T-nextsibling,Visit) ; Visit(T-data);/訪問根結(jié)點(diǎn) return OK; /PostOrderTraverseTree,樹的后根(次序)遍歷,R,A,D,B,E,F,H,K,C,G,Status PostOrderTraverseTree1(CSTree T, Status(*Visit)(TElemType e) if(!T) return OK; /若T為空樹,則直接返回 for(p=T-firstchild; p; p=p-nextsibling) PostOrderTraverseTree1(p-firstchild,Visit); Visit(T-data);/訪問根結(jié)點(diǎn) return OK; /PostOrderTraverseTree1,R,A,D,B,E,F,H,K,C,G,求樹的深度,Height(T)=0 T=NULL Height(T)=max(Height(T-firstchild)+1, Height(T-nextsibling) 其它,求樹的深度,int Height_Tree(CSTree T) int h1, h2; if(!T) return 0; /若T為空樹 h1=Height_BiTree(T-firstchild); /求左子樹的高度 h2=Height_BiTree(T-nextsibling);/求右子樹的高度 return (max(h1+1), h2); /Height_BiTree,R,A,D,B,E,F,H,K,C,G,求樹的葉子結(jié)點(diǎn)個(gè)數(shù),LeafCount(T)=0 T=NULL LeafCount(T)=1 T-firstlchild=NULL LeafCount(T)=LeafCount(T-firstlchild) + LeafCount(T-nextsibling) 其它,求樹的葉子結(jié)點(diǎn)個(gè)數(shù),Int LeafCount_Tree(CSTree T) int num1, num2; if(!T) return 0; /若T為空樹 if(T-firstchild=NULL) return 1; /T為葉子結(jié)點(diǎn) num1=LeafCount_BiTree(T-firstchild); /求左子樹的葉子數(shù) num2=LeafCount_BiTree(T-nextsibling); /求右子樹的葉子數(shù) return (num1 + num2); /LeafCount_Tree,count=LeafCount_Tree(root),主調(diào)用,建立樹的孩子兄弟鏈表存儲(chǔ)結(jié)構(gòu),根據(jù)先根遍歷的擴(kuò)展序列建立 根據(jù)兩種遍歷序列建立(先根和后根) 根據(jù)廣義表表達(dá)式建立,R,B,A,C,D,E,F,R,A,D,B,E,F,C,孩子兄弟鏈表的建立(1),R A D E B C F ,先序遍歷的擴(kuò)展序列,R,B,A,C,D,E,F,R,A,D,B,E,F,C,Status CreateBiTree(CSTree /CreateBiTree,孩子兄弟鏈表的建立(1),R A D E B C F ,假設(shè)一棵樹的先根序列為RADEBCF ,后根序序列為. DEABFCR, 請(qǐng)畫出該樹,R A D E B C F,D E A B F C R,先根序列,后根序列,孩子兄弟鏈表的建立(2),Status CreatCSTree(CSTree ,孩子兄弟鏈表的建立(3),R,B,A,C,D,E,F,R,A,D,B,E,F,C,S=(R(A(D, E), B, C(F),廣義表表達(dá)式,(R(A(D, E), B, C(F),R,A,D,B,E,F,C,Status CreateCSTree(CSTree ,R,A,D,B,E,F,C,S=(R(A(D, E), B, C(F),Status CreateCSTree(CSTree ,1,S(1)=(R(A(D, E), B, C(F),root(1)=? hsub(1)=? tsub(1)=?,Status CreateCSTree(CSTree ,1,S(1)=(R(A(D, E), B, C(F),root(1)=? hsub(1)=? tsub(1)=?,Status CreateCSTree(CSTree ,1,S(1)=(R(A(D, E), B, C(F),root(1)=? hsub(1)=? tsub(1)=?,Status CreateCSTree(CSTree ,S(1)=(R(A(D, E), B, C(F),1,root(1)=R hsub(1)=(A(D, E), B, C(F) tsub(1)=( ),Status CreateCSTree(CSTree ,S(1)=(R(A(D, E), B, C(F),1,root(1)=R hsub(1)=(A(D, E), B, C(F) tsub(1)=( ),Status CreateCSTree(CSTree ,S(1)=(R(A(D, E), B, C(F),1,root(1)=R hsub(1)=(A(D, E), B, C(F) tsub(1)=( ),R,T(1),Status CreateCSTree(CSTree ,S(1)=(R(A(D, E), B, C(F),1,root(1)=R hsub(1)=(A(D, E), B, C(F) tsub(1)=( ),R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=? hsub(2)=? tsub(2)=?,R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=? hsub(2)=? tsub(2)=?,R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=? hsub(2)=? tsub(2)=?,R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=A hsub(2)=(D, E) tsub(2)=(B, C(F),R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=A hsub(2)=(D, E) tsub(2)=(B, C(F),R,T(1),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=A hsub(2)=(D, E) tsub(2)=(B, C(F),R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(2)= (A(D, E), B, C(F),2,root(2)=A hsub(2)=(D, E) tsub(2)=(B, C(F),R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=? hsub(3)=? tsub(3)=?,R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=? hsub(3)=? tsub(3)=?,R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=? hsub(3)=? tsub(3)=?,R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=D hsub(3)=( ) tsub(3)=(E),R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=D hsub(3)=( ) tsub(3)=(E),R,T(1),A,T(2),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=D hsub(3)=( ) tsub(3)=(E),R,T(1),A,T(2),D,T(3),Status CreateCSTree(CSTree ,S(3)= (D, E),3,root(3)=D hsub(3)=( ) tsub(3)=(E),R,T(1),A,T(2),D,T(3),Status CreateCSTree(CSTree ,S(4)= ( ),4,root(4)=? hsub(4)=? tsub(4)=?,R,T(1),A,T(2),D,T(3),Status CreateCSTree(CSTree ,S(4)= ( ),4,root(4)=? hsub(4)=? tsub(4)=?,R,T(1),A,T(2),D,T(3),Status CreateCSTree(CSTree ,S(4)= ( ),4,root(4)=? hsub(4)=? tsub(4)=?,R,T(1),A,T(2),D,T(3),T(4)=NULL,Status CreateCSTree(CSTree ,3,R,T(1),A,T(2),D,T(3),S(3)= (D, E),root(3)=D hsub(3)=( ) tsub(3)=(E),Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=? hsub(4)=? tsub(4)=?,Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=? hsub(4)=? tsub(4)=?,Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=? hsub(4)=? tsub(4)=?,Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=E hsub(4)=( ) tsub(4)=( ),Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=E hsub(4)=( ) tsub(4)=( ),Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=E hsub(4)=( ) tsub(4)=( ),E,T(4),Status CreateCSTree(CSTree ,4,R,T(1),A,T(2),D,T(3),S(4)= (E),root(4)=E hsub(4)=( ) tsub(4)=( ),E,T(4),0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,樹的孩子表示法,A,B,C,F,H,D,E,G,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,樹的孩子表示法,typedef struct CTNode/孩子結(jié)點(diǎn) int child; struct CTNode *next; *ChildPtr; Typedef struct TElemType data; ChildPtr firstchild; /孩子鏈表頭指針 CTBox; typedef struct CTBox nodesMAX_TREE_SIZE; int n, r; /結(jié)點(diǎn)數(shù)和根的位置 PTree;,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,樹的先根遍歷,A,B,F,H,D,E,G,C,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,p(1),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,p(1),1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,1,p(1),1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3)=NULL,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3)=NULL,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3)=NULL,0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,2,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,3,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void CTTree_DFS(CTree T, int v0, Status(*Visit)(TElemType e) /樹的孩子鏈表的先根遍歷 Visit(T.nodesv0.data) p=T.nodesv0.firstchild; while(p) w=p-child; CTTree_DFS(T, w, Visit); p=p-next; ,4,p(1),1,2,3,4,5,6,7,v0(2),p(2),v0(3),p(3),0,1,2,3,4,5,6,7,A,B,F,H,D,E,G,C,v0(1),void C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)留預(yù)埋安全技術(shù)交底
- 2025專項(xiàng)工程承包合同書版
- 2025企業(yè)違反合同規(guī)定員工權(quán)益受損
- 廣東省肇慶市2024屆高三數(shù)學(xué)四月月考試卷附解析
- 安徽省皖北縣2024~2025學(xué)年 高二下冊(cè)3月聯(lián)考數(shù)學(xué)試卷(A卷)附解析
- 新疆煙草專賣局考試題庫2024
- 神話世界大冒險(xiǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 酒店布草員工評(píng)語
- 河池市宜州區(qū)特崗教師招聘筆試真題2024
- 2024年新疆地方金融監(jiān)督管理局下屬事業(yè)單位真題
- CD唱機(jī)原理課件
- 露天礦礦建竣工驗(yàn)收資料
- 心電監(jiān)護(hù)操作評(píng)分標(biāo)準(zhǔn)
- 電子印鑒卡講解
- 生命體征PPT精品課件
- 異步電動(dòng)機(jī)轉(zhuǎn)差頻率間接矢量控制matlab仿真
- Q∕SY 02098-2018 施工作業(yè)用野營(yíng)房
- 深基坑工程安全檢查表范本
- 高中必備古詩文75篇高中古詩大全必背
- 聲門下吸引技術(shù)ppt課件
- 法律英語單詞分單元匯總
評(píng)論
0/150
提交評(píng)論