Leetcode#104. Maximum Depth of Binary Tree(이차 트리의 최대 깊이)

1746 단어

제목 설명


두 갈래 나무를 정해 최대 깊이를 찾아라.
두 갈래 나무의 깊이는 뿌리 노드에서 가장 먼 잎 노드까지의 가장 긴 경로의 노드 수이다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예: 두 갈래 나무[3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7

최대 깊이 3을 반환합니다.

생각


사고방식1:
차례로 돌아가다
생각 2:
비귀속

코드 구현

package Tree;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 104. Maximum Depth of Binary Tree( )
 *  , 。
 *  。
 */
public class Solution104 {
    /**
     *  
     *
     * @param root
     * @return
     */
    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(maxDepth(root.left) + 1, maxDepth(root.right) + 1);
    }

    /**
     *  , 
     *
     * @param root
     * @return
     */
    public int maxDepth_2(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int depth = 0;
        int start = 0;
        int end = 1;
        Queue queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode temp = queue.poll();
            start++;
            if (temp.left != null) {
                queue.offer(temp.left);
            }
            if (temp.right != null) {
                queue.offer(temp.right);
            }
            if (start == end) {
                start = 0;
                end = queue.size();
                depth++;
            }
        }
        return depth;
    }

    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }

}

좋은 웹페이지 즐겨찾기