22. 운행결과Forest 의 전위 운행결과(A(B,C(K)),D(E(H),F(J),G)) =이진트리 의 전위 운행결과(A(B,C(K)),D(E(H),F(J),G))Forest 의 후위 운행결과((B,(K)C)A,((H)E,(J)F,G)D)=이진트리 의 중위 운행결과((B,(K)C)A,((H)E,(J)F,G)D)
32. Example 5.24,25a전위preorder 루트 – 왼쪽 - 오른쪽 a b d e c f h i gcb중위inorder 왼쪽 - 루트 - 오른쪽d b e a h f I c gdgfe후위postorder 왼쪽 – 오른쪽 - 루트 d e b h I f g c aih
33. Example 5.27*전위prefix notation * + 2 x 4 -> *(2+x)4 -> (2+x)*44+중위infix notation(2+x)*42x후위postfix notation 2x+4* -> (2+x)4* -> (2+x)*4
40. MIXAL대수 공식에 대한 오른쪽 스레드 이진 트리의노드 구조RLINK : 오른쪽 하위 노드RATG: 스레드인경우1LLINK : 왼쪽 하위 노드TYPE : 노드의 종류TYPE 0 : 하나의 상수TYPE 1 : 하나의 변수TYPE 2 : +TYPE 3 : -TYPE 4 : XTYPE 5 : /INFO : 상수일경우 그 값
41. Algorithm D (미분)Text변수 X에 대한 공식 Y의 해석적미분을 뜻하는 트리를 만들고 NODE(DY) 가 그것을 가리키게 만든다.D1. [초기화] P ← Y$ (트리의 후위순서로 첫째노드)D2. [미분] P1 ← LLINK(P) if( P1 ≠ null ) then Q1 ← RLINK(P1) DIFF[TYPE(P)] 수행D3. [링크 복원] if(TYPE(P) 가 이항연산자) then RLINK(P1) ← P2D4. [P$로 나아간다] P2 ← P, P ← P$ if(RTAG(P2) == 0 ) then RLINK(P2) ← QD5. [끝인가?] if(P ≠ Y) then GOTO D2. else LLINK(DY) ← Q, RLINK(Q) ← DY, RTAG(Q) ← 1
43. Algorithm D (미분)NODE(P) : 오른쪽 스레드식이진트리의루트트리 구축 함수TREE(x,U,V) x 를 루트노트, U 와 V 를 하위트리로 하는 새 트리를 만든다TREE(x,U) 하위트리가하나인 새 트리를 만든다TREE(x)x 를 말단 루트 노드로 하는 새 트리를 만든다미분함수DIFF(0), DIFF(1) ~ DIFF(8)
44. 트리 구축 함수PictureTREE(x,U,V) x 를 루트노트, U와V를 하위트리로 하는 새 트리를 만든다W ← AVAIL , INFO(W) ← x, LLINK(W) ← URLINK(U) ← W, RTAG(U) ← 0, RLINK(V) ← W, RTAG(V) ← 1WUV
49. 미분 함수이항연산자P1 은 U , P2 는 VQ1 은 D(U), Q 는 D(V)(15)DIFF(4) + 연산if(INFO(Q1)==0) then AVAIL ← Q1else if(INFO(Q)==0) AVAIL ← Q, Q ← Q1else Q ← TREE(“+”,Q1,Q) …나머지 부분과 MIX 코드는 생략
51. 연습문제 1.본문에서는 숲 F 에 대응되는 이진트리 B(F) 의 공식적인 정의를 제시했다. 그 반대에 대한, 다시말해서이진트리B 에 해당하는 숲 F(B) 에 대한 공식적인 정의를 제시하라.어떤 이진트리: B그에 대응하는 숲: F(B)만일 B가 비었으면 :빈 숲그렇지 않으면 : F(B)는 하나의 트리 T + 숲F(right(B))root(T) = root(B)subtree(T) = F(left(B))