知道前序(包括空結(jié)點(diǎn) 下面代碼用’,’代替)建立一個(gè)二叉樹,前序 中序 后序 層序輸出 如何求葉子結(jié)點(diǎn)數(shù), 如何求二叉樹深度。
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct node{ char data; struct node *lt, *rt;}ST;char str[52];int flag, num;ST *creat(){ ST *root; if(str[++flag] == ',') { root = NULL; } else { root = (ST *)malloc(sizeof(ST)); root->data = str[flag]; root->lt = creat(); root->rt = creat(); } return root;}void midsort(ST *root){ if(root) { midsort(root->lt); 知道前序和中序建立二叉樹過(guò)程#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct node{ char data; struct node *lt, *rt;}ST;ST *creat(int n, char a[], char b[]){ ST *root; int i; if(n == 0) return NULL; root = (ST *)malloc(sizeof(ST)); root->data = a[0]; for(i = 0; b[i]; i++) if(b[i] == a[0]) break; root->lt = creat(i, a + 1, b); root->rt = creat(n - i - 1, a + i + 1, b + i + 1); return root;}void lastsort(ST *root){ if(root) { lastsort(root->lt); lastsort(root->rt); printf("%c", root->data); }}int main(){ ST *root; int len; char a[100], b[100]; while(~scanf("%s %s", a, b)) { len = strlen(a); root = creat(len, a, b); lastsort(root); printf("/n"); } return 0;}知道中序和后序建二叉樹過(guò)程
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct node{ char data; struct node *lt, *rt;}ST;ST *creat(int n, char b[], char a[]){ ST *root; int i; if(n == 0) return NULL; root = (ST *)malloc(sizeof(ST)); root->data = b[0]; for(i = 0; a[i]; i++) if(a[i] == b[0]) break; root->rt = creat(n - i - 1, b + 1, a + i + 1); root->lt = creat(i, b + n - i, a); return root;}void headsort(ST *root){ if(root){ printf("%c", root->data); headsort(root->lt); headsort(root->rt); }}int main(){ ST *root; int t, len, i, j; char a[55], b[55], t1; while(~scanf("%d", &t)) { while(t--) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); scanf("%s %s", a, b); len = strlen(b); for(i = 0, j = len - 1; i <= j; i++, j--) { t1 = b[i]; b[i] = b[j]; b[j] = t1; } root = creat(len, b, a); headsort(root); printf("/n"); } } return 0;}新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注