1樓:匿名使用者
#include
#include
#include
struct tree //定義結構體tree
;//宣告函式
struct tree *create_btree(struct tree *root,struct tree *r,char info);
struct tree *search_btree(struct tree *root,char key);
void print_btree(struct tree *r,int l);
void pretra(struct tree *head);
void midtra(struct tree *head);
void afttra(struct tree *head);
main ()
while(*s) ;
//printf("%d",root->left);
print_btree(root,0);
printf("前序遍歷:\n");
pretra(root);
printf("\n");
printf("中序遍歷:\n");
midtra(root);
printf("\n");
printf("後序遍歷:\n");
afttra(root);
printf("\n");
key='1';
while (key)
} /* btree.c 結束 */
//建立二叉樹,實際上建立的是一個有序二叉樹
struct tree *create_btree(struct tree *root,struct tree *r,char info)
r->left=0; //初始化這個新結點
r->right=0;
r->info=info; //將輸入的字元賦值給這個結點
if (root) //如果root不為空
else
return r; //返回新結點的指標的地址
} /* if = = 0 接下頁 */
if (info < r->info) //如果輸入的info小於r的info
create_btree(r,r->left,info); //遞迴呼叫,目的是插入到合適的位置,小則跟左子結點比較,沒有就加為左子結點
if(info>=r->info)
create_btree(r,r->right,info); //同理,沒有右子節點就加為右子結點
} /* create_btree(root,r,info) */
//查詢功能
struct tree *search_btree(struct tree *root,char key)
while(root->info!=key) //如果當前結點不是要查詢的結點
} /* while(root->info!=key) */
if (root !=0) //如果root不為空,也就是上面找到了root->info==key的值
>info); //那麼返回找到的值
return root ; //分會該值的指標,如果沒找到是null,找到的話就是找到結點的指標
} /* *search_btree(root,key) */
//二叉樹的輸出
void print_btree(struct tree *r,int l)
void pretra(struct tree *head) //前序遍歷
else
}void midtra(struct tree *head) //中序遍歷
else
}void afttra(struct tree *head) //後序遍歷
else}
二叉樹的問題,二叉樹問題
二叉樹就是僅有兩個分支,而且左右分支位置不能交換的樹型結構。a b c d e 這就是一個簡單的二叉樹。所謂中序遍歷就是指訪問二叉樹時先訪問左孩子,接著訪問它的雙親,最後訪問右孩子的一種遍歷方法。有一個資料結構的學習網頁,不錯。還有動畫配合理解。二叉樹問題 50 二叉樹問題 先解釋為什麼d對,因為二...
滿二叉樹和完全二叉樹的區別
滿二叉樹 除了葉結點外每一個結點都有左右子女且葉結點都處在最底層的二叉樹,這個似乎很好想像出來 完全二叉樹 只有最下面的兩層結點度小於2,並且最下面一層的結點都集中在該層最左邊的若干位置的二叉樹 這個,就說從滿二叉樹裡,最下一層的葉子,如果是從右往左拿掉葉子,不論多少,都是完全的,如果不是從右往左拿...
資料結構二叉樹題目,資料結構二叉樹題目
下面是c 的 主要是一個遞迴的思維。收好都是我自己寫的,能用 bintree.h 定義 struct node class bintree bintree.cpp bintree.cpp implementation of the bintree class.include bintree.h bi...