SDUT - 2136 데이터 구조 실험의 이 진 트 리 구축 과 옮 겨 다 니 기
8112 단어 데이터 구조
abc, de, g, f,, (그 중 쉼표 는 빈 노드 를 표시 합 니 다).이 진 트 리 를 만 들 고 중간 순서 와 뒷 순서 로 이 진 트 리 를 옮 겨 다 니 며 마지막 으로 잎 노드 의 개수 와 이 진 트 리 의 깊이 를 구 하 십시오.
입력
50 글자 이하 의 문자열 을 입력 하 십시오.
출력
출력 은 모두 4 줄 입 니 다:
첫 번 째 줄 출력 에서 시퀀스 옮 겨 다 니 기;
두 번 째 줄 출력 후 시퀀스 옮 기기;
세 번 째 줄 출력 잎 노드 개수;
네 번 째 줄 출력 이 진 트 리 깊이.
엄 선생님 책 에 써 있 는 거 에 대해 서 정말 힘 들 게 봤 어 요.
1 #include<stdio.h>
2 #include<malloc.h>
3 typedef struct btnode
4 {
5 char data;
6 struct btnode *L,*R;
7 }st;
8 st *t;
9 int count = 0 ;
10 st *creat(st *t)//
11 {
12 char c;
13 if((c = getchar())==',')//
14 t = NULL;
15 else
16 {
17 t = (st *)malloc(sizeof(st));
18 t->data = c;//
19 t->L = creat(t->L);
20 t->R = creat(t->R);
21 }
22 return t;
23 }
24 void inorder(st *t)//
25 {
26 if(t!=NULL)
27 {
28 inorder(t->L);
29 printf("%c",t->data);
30 inorder(t->R);
31 }
32 }
33 void posorder(st *t)//
34 {
35 if(t!=NULL)
36 {
37 posorder(t->L);
38 posorder(t->R);
39 printf("%c",t->data);
40 }
41 }
42 void leafnum(st *t)//
43 {
44 if(t)
45 {
46 if((t->L == NULL)&&(t->R == NULL))
47 count++;
48 leafnum(t->L);
49 leafnum(t->R);
50 }
51 }
52 int deep(st *t)
53 {
54 int ld,rd;
55 if(!t)
56 return 0;
57 else
58 {
59 ld = deep(t->L);
60 rd = deep(t->R);
61 if(ld>=rd)
62 return ld+1;
63 else
64 return rd+1;
65 }
66 return 1;
67 }
68 int main()
69 {
70 struct btnode *s;
71 int height ;
72 s = creat(t);
73 inorder(s);
74 puts("");
75 posorder(s);
76 puts("");
77 leafnum(s);
78 printf("%d
",count);
79 height = deep(s);
80 printf("%d
",height);
81 return 0;
82 }
다 재 귀 구 하 는 거 야. 쓰 는 것 도 헷 갈 려.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.