Skip to content

yoonnyeong/ProgrammingInterview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

23 Commits
ย 
ย 
ย 
ย 

Repository files navigation

ProgrammingInterview

ํŒŒ์ผ ๊ตฌ์„ฑ

ํด๋” ์ด๋ฆ„ ์„ค๋ช…
ch04 ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
ch05 ํŠธ๋ฆฌ์™€ ๊ทธ๋ž˜ํ”„
ch06 ๋ฐฐ์—ด๊ณผ ๋ฌธ์ž์—ด
ch07 ์žฌ๊ท€ ํ˜ธ์ถœ
ch08 ์ •๋ ฌ
ch09 ๋™์‹œ์„ฑ
ch10 ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ch16 ์ง€์‹๊ธฐ๋ฐ˜๋ฌธ์ œ

ํŠธ๋ฆฌ์™€ ๊ทธ๋ž˜ํ”„

  • ํŠธ๋ฆฌ๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ๊ณผ ์‹คํ–‰ ์‹œ๊ฐ„ ๋ถ„์„์— ๊ด€ํ•œ ์ง€์‹์„ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ์œ„ํ•ด ์ข‹์€ ์ž๋ฃŒ

ํŠธ๋ฆฌ


  • 0๊ฐœ ์ด์ƒ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค(๋˜๋Š” ํฌ์ธํ„ฐ)๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋…ธ๋“œ(๋ฐ์ดํ„ฐ ์›์†Œ)๋กœ ๊ตฌ์„ฑ
  • ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋…ธ๋“œ๋Š” ํ•˜๋‚˜๋ฟ
  • ๋…ธ๋“œ := ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค๋กœ ํ‘œํ˜„๋œ๋‹ค
  • ๋ฃจํŠธ : ์ตœ์ƒ์œ„ ๋…ธ๋“œ; ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ๋งŒ ํ•˜๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ -> ๋ชจ๋“  ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์ ์€ ๋ฃจํŠธ

  public class Node{
   public Node[] children; //๋…ธ๋“œ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด
  }
  public class IntNode : Node {
    public int value;
  }
 

1. ์ด์ง„ํŠธ๋ฆฌ

  • ๋ณดํ†ต 'ํŠธ๋ฆฌ'๋ผ ํ•˜๋ฉด, ์ด์ง„ํŠธ๋ฆฌ๋ผ๊ณ  ์ผ์ปซ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • ํ•œ ๋…ธ๋“œ์— ์ž์‹์ด ์ตœ๋Œ€ ๋‘๊ฐœ๊นŒ์ง€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ ๋‘ ์ž์‹์€ ๊ฐ๊ฐ ์™ผ์ชฝ ์ž์‹, ์˜ค๋ฅธ์ชฝ ์ž์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  
  class Node{
   private:
     Node left; //์™ผ์ชฝ ์ž์‹
     Node right; // ์˜ค๋ฅธ์ชฝ ์ž์‹
     int value; // ๋…ธ๋“œ์˜ ๊ฐ’
   public:
     Node(Node left, Node right, int value){
        this.left = left;
        this.right = right;
        this.value = vaule;
    }
    
    Node getLeft(){return left;}
    Node getRight(){return right;}
    int getValue(){return value;}
  };
  
  

2. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (Binary Search Tree)

  • ํŠธ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, ํ”ํžˆ ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • BST์—์„œ๋Š” ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹์˜ ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์ž์‹ ์˜ ๊ฐ’ ์ดํ•˜์ด๊ณ  , ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ์ž์‹ ์˜ ๊ฐ’ ์ด์ƒ |์™ผ์ชฝ ๋…ธ๋“œ |๋‚˜ | ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ | |:-- |:-- |:-- | | < | n| < | -๋ฃฉ์—… ์—ฐ์‚ฐ(look up)ํŠธ๋ฆฌ์— ์žˆ๋Š” ํŠน์ •๋…ธ๋“œ์˜ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘
    ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ๋„์ด ์•„๋‹Œ ๋™์•ˆ ๋ฐ˜๋ณต
    ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ด๋ฉด
    ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๋ฆฌํ„ด
    ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด
    ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ํ˜„์žฌ ๋…ธ๋“œ๋กœ ์„ค์ •
    ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด
    ์™ผ์ชฝ ์ž์‹์„ ํ˜„์žฌ ๋…ธ๋“œ๋กœ ์„ค์ •
    ๋ฐ˜๋ณต๋ฌธ ๋

Node findNode(Node root, int value){
  while(root!=null){ 
    int currval= root.getValue();
    if(currval == value) break;
    if(currval < value ){
      root = root.getRight();
    }
    else{
      root = root.getLeft();
    }
  
  }
  return root;
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors