티스토리 뷰

728x90
반응형

문제 요약

 

문제풀이

문제의 트리 구조는 아래와 같다.

 

  • 노드의 왼쪽 서브트리는 노드의 키보다 작은 키를 가진 노드들로만 이루어져 있어야 합니다.
  • 노드의 오른쪽 서브트리는 노드의 키보다 큰 키를 가진 노드들로만 이루어져 있어야 합니다.
  • 왼쪽 및 오른쪽 서브트리 또한 이진 탐색 트리여야 합니다.

이번 문제에서는 트리의 탐색하면서 더하는 식으로 진행 하면된다.

트리와 DFS 관한 내용은 아래 글에서 확인 해보면 된다.

 

[알고리즘 이론] 깊이 우선 탐색(DFS)

이론 이번에 볼 자료구조는 깊이 우선 탐색(DFS)이다. 깊이 우선 탐색은 영어로 Depth First Search이고 줄어서 DFS라고 많이 부른다. 그래프 탐색 알고리즘 중 하나인데 그래프 말고도 트리에서도 적용

jih3508.tistory.com

 이번 문제에서는 preOrder, InOrder, PostOrder관한 순서가 아니라 Right → Root → Left 순으로 탐색하면된다.

기존 트리탐색 알면 Right → Root → Left 순으로 탐색하는것 구현은 어렵지 않다. 

구현은 아래코드를 보면 된다.

Python

def treeOrder(node: TreeNode):
    global stackValue
    if(node.right):
        treeOrder(node.right)

    stackValue += node.val
    node.val = stackValue

    if(node.left):
        treeOrder(node.left)

 

Java

public void treeOrder(TreeNode node){

    if(node.right != null){
        treeOrder(node.right);
    }

    stackValue += node.val;
    node.val = stackValue;

    if(node.left != null){
        treeOrder(node.left);
    }

}

Code

Python

class Solution:

    def bstToGst(self, root: TreeNode) -> TreeNode:
        global stackValue
        stackValue = 0
        def treeOrder(node: TreeNode):
            global stackValue
            if(node.right):
                treeOrder(node.right)

            stackValue += node.val
            node.val = stackValue

            if(node.left):
                treeOrder(node.left)

        
        treeOrder(root)
        return root

Java

class Solution {
    int stackValue;
    public TreeNode bstToGst(TreeNode root) {
        
        this.stackValue = 0;
        treeOrder(root);

        return root;
    }

    public void treeOrder(TreeNode node){

        if(node.right != null){
            treeOrder(node.right);
        }

        this.stackValue += node.val;
        node.val = this.stackValue;
        
        if(node.left != null){
             treeOrder(node.left);
        }
        
    }
}
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함