"Tree 명령"의 두 판 사이의 차이
jjuiddong
(새 문서: '''#tree 명령어''' static으로 선언된 변수는 작동하지 않는다. (버그 인듯) '''#tree 용법''' #tree ( head: head_expr left : left_expr right : right_exp...) |
|||
55번째 줄: | 55번째 줄: | ||
) | ) | ||
) | ) | ||
+ | } | ||
+ | |||
+ | == '''#tree''' visualizer 예제 == | ||
+ | |||
+ | |||
+ | std::map<*>|std::multimap<*>|std::set<*>|std::multiset<*>{ | ||
+ | preview ( | ||
+ | #( | ||
+ | "[", | ||
+ | $e._Mysize, | ||
+ | "](", | ||
+ | #tree( | ||
+ | head: $e._Myhead->_Parent, | ||
+ | skip: $e._Myhead, | ||
+ | left: _Left, | ||
+ | right: _Right, | ||
+ | size: $e._Mysize | ||
+ | ) : $e._Myval, | ||
+ | ")" | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | children ( | ||
+ | #( | ||
+ | #([comp] : $e.comp), | ||
+ | #tree( | ||
+ | head: $e._Myhead->_Parent, | ||
+ | skip: $e._Myhead, | ||
+ | left: _Left, | ||
+ | right: _Right, | ||
+ | size: $e._Mysize | ||
+ | ) : $e._Myval | ||
+ | ) | ||
+ | ) | ||
} | } |
2013년 3월 31일 (일) 16:00 기준 최신판
#tree 명령어
static으로 선언된 변수는 작동하지 않는다. (버그 인듯)
#tree 용법 #tree ( head: head_expr left : left_expr right : right_expr size : size_expr skip: skip_expr ) : disp_expr
의사언어로 표현하면 다음과 같다. (트리를 중위순회 한다.)
$e = current object count = 0 traverse( head_expr, count ) function traverse( node, count ) { ++count $e = node if ($e == NULL) return; if (count > size_expr) exit // 종료 if ($e == skip_expr) exit // 종료 traverse( left_expr, count ) display disp_expr traverse( right_expr, count ) }
// sample struct TreeNode { TreeNode *left, *right; int value; }; struct TreeTest { TreeNode *head; int size; }; TreeTest { children ( #( #tree ( head : $e.head, left : left, right : right, size : $e.size ) : &$e ) ) }
[편집] #tree visualizer 예제
std::map<*>|std::multimap<*>|std::set<*>|std::multiset<*>{ preview ( #( "[", $e._Mysize, "](", #tree( head: $e._Myhead->_Parent, skip: $e._Myhead, left: _Left, right: _Right, size: $e._Mysize ) : $e._Myval, ")" ) ) children ( #( #([comp] : $e.comp), #tree( head: $e._Myhead->_Parent, skip: $e._Myhead, left: _Left, right: _Right, size: $e._Mysize ) : $e._Myval ) ) }