[Golang] Leet Code-검지 Offer-면접문제 32-II-위에서 아래로 두 갈래 나무 인쇄 II

제목


위에서 아래로 층별로 두 갈래 트리를 인쇄하고, 같은 층의 노드는 왼쪽에서 오른쪽으로 순서대로 인쇄하며, 층마다 한 줄로 인쇄한다.
예를 들어 두 갈래 나무를 주면[3,9,20,null,null,15,7],
   3    
  / \   
 9   20
    /  \    
   15   7 

다음 단계를 반복한 결과를 반환합니다.
[[3],[9,20],[15,7]]  

팁: 노드 총 수 <= 1000
출처: 리코드(LeetCode) 링크:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof

문제 풀이 사고방식

  • level 변수를 정의하여 두 갈래 나무의 등급을 지정하는 데 사용합니다. level=0, 두 갈래 나무 꼭대기부터 시작합니다
  • level++creat(tree,root.Left,level)creat(tree,root.Right,level)는 위에서 아래로, 왼쪽에서 오른쪽으로 층순으로 두 갈래 나무를 반복합니다
  • (*tree)[level]=append((*tree)[level],root.Val) 반복해서 얻은 값을 지정된 레벨의 그룹에 추가합니다

  • 코드


    – 실행 시간: 0ms – 메모리 사용량: 3MB
    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    
    func levelOrder(root *TreeNode) [][]int {
        // 
        tree:=make([][]int,0)
        creat(&tree,root,0)
        return tree
    }
    
    func creat(tree *[][]int,root *TreeNode,level int) {
        if root==nil{
            return 
        }
    
        if len(*tree)-1<level{
            (*tree)=append((*tree),make([]int,0))
        }
        
        (*tree)[level]=append((*tree)[level],root.Val)
    
        //level++ , 
        level++
        creat(tree,root.Left,level)
        creat(tree,root.Right,level)
    }
    

    좋은 웹페이지 즐겨찾기