기본 콘텐츠로 건너뛰기

tree

Tree

중요한 이유?
현실세계와 많이 닮음. 부모와 자식간의 관계, 파일시스템 등
부모와 자식간의 복종 관계를 나타내고, 서비디렉토리는 부모 디렉토리에 포함됨

특징?
- dynamic data structure (추가하기 쉬우며 지우기 쉽다.)
- linked structure

트리 정의?
- root, parent, child, leaf
- signle root, no cycles in a tree, each node can have one parent

트리 종류?
- generic tree
- binary tree - each nood needs : parent, value, left,ritht child

구현 방법?
public class BinaryTree {
     TreeNode root;

     // method
     // pre-order
     // post-order
}

public class TreeNode {
     private E vale;
     private TreeNode parent;
     private TreeNode left;
     private TreeNode right;

     public TreeNode(E value, TreeNode parent) {
        // ...
     }

     // addLeftChild
     // addRightChile
}

traversals?
- visit data in different ways or in different ordering
- social network, maze game

pre-order traverslas
- visit yourself
- visit all your sub-left-tree
- visit all your sub-right-tree

post-order traverslas
- yourself - right - left

in-prder traverslas
- left - yourself - right

level-order(BFS)
- keep a list and keep adding to it and removing from start, we used this list like a 'queue'

pre-order, post-order are DFS

binary search
- log n
- sorted arrays are good for search but bad for insertion/removal
arrays cannot be dynamically resized either
so we use binary search tree

BST
- binary tree
- left subtrees are less than parent
- right subtrees are grater than parent

댓글

이 블로그의 인기 게시물

[JPA] deleted instance passed to merge

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.ObjectDeletedException:   deleted instance passed to merge: 위와 같은 에러가 발생... em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다. (Object is already marked for being deleted) 이후 트랜잭션을 커믹해서 플러시를 호출하면 실제 데이터베이스에 삭제 쿼리를 전달한다. 하지만 삭제된 엔티티를 한 트랜잭션내에서 다시 삭제할려고하면 해당 익셉션이 발생한다. 참조 : 자바 ORM 표준 JPA 프로그래밍

[PS4 게임] 포탈 나이츠

플스4에서는 스포츠 게임을 제외하고 2인용을 같이 할수 있는 게임이 많지 않다. 아내와 같이 할 수 있는 게임을 골라서 골라서 찾은 게임은 바로 포탈나이츠 아내는 게임을 거의 해본적이 없어 싫어할 수 도 있어 섣불리 레고 마블 히어로즈는 사기에는 가격이 너무 비쌋지만 포탈나이츠는 2만원에 다운로드 받을 수 있었다. 온라인으로 게임을 할 수 있으며, 로컬 2인을 선택하여 화면 분할하여 게임을 할수 도 있다. 게임 캐릭터등은 아기자기 하지만 생각보다 이것저것 할게 많아 시간이 금방간다는... 다행이 아내도 게임을 좋아해서 재밌게 할 수 있었다. 나는 전사 아내는 마법사. 같이 몬스터를 때려잡고... 주의사항은 처음에 할때 아내는 게스트로 로그인하여 했었는데 다음에 다시 하니 게스트로 했던 정보가 모두 날라가버린... 꼭 PSN에 계정 등록해야 된다. 공식 PS4의 포탈 나이츠 https://store.playstation.com/ko-kr/product/EP4040-CUSA06287_00-ASIAALKNIGHTS000?emcid=kr-ko_fb_171121_BlackFriday Youtube https://www.youtube.com/results?search_query=포탈+나이츠

xsl-fo를 이용한 pdf 생성기술

1. PDF 생성 기술 개발을 위해 적용가능한 오픈소스 1)  pdfbox - http://pdfbox.apache.org/ - License : Apache License Version 2.0 2)  iText - http://itextpdf.com/ - License : APGL License 3)  Apache FOP - http://xmlgraphics.apache.org/fop/ -> 유지보수 비용은 높지만, 무료이며 한글이 출력 가능한 Apache FOP를 적용 2. XSL-FO를 이용하여 PDF를 어떻게 생성 하는지 설명 * XSL-FO의 기본 프로세스 용어 설명 1) XSLT - XML 문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반의 언어 - 원본 문서는 변경되지 않으며, 원본 문서를 기반으로 새로운 문서를 생성 2) XSL-FO - XSL-FO는 종이, 화면 등 다양한 매체에 출력 하기 위한 XML 기반의 마크업 언어 - 사용자는 XSL-FO를 통해 어떻게 정보가 PDF에 출력되는지 확인 가능 3) XSL-FO Formatter - XSL-FO 문서를 최종 결과물인 PDF(다른 매체도 가능)문서로 변환할 수 있는 Formatter 간략하게 애기하면,  XSL-FO를 Formatter로 변환하게 되면 PDF가 생성되며,  XSL-FO는 사용자가 직접 작성할 수도 있고 XML source와 XSLT stylesheet를 이용하여 동적으로 생성 가능하다. 3. 간단한 예제로 정리 1) 필요한 데이터를 XML에 기술한다. XML file  <?xml version="1.0" encoding="UTF-8"?> <root>   <name>홍길동</name> </root>  ...