LeetCode) 104. Maximum Depth of Binary Tree

유병수·2023년 5월 30일
0

트리구조의 기초문제. 뎁스가 얼마나 많은지 확인하는 문제다. 나는 덱을 사용해서 풀었는데 재귀를 사용하면 정말 간단하게 풀린다...

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        int maxDepth = 0;

        if(root == null) return 0;

        Deque<Object[]> dq = new ArrayDeque<>();

        dq.add(new Object[]{root,1});

        while(!dq.isEmpty()){
            
            Object[] poll = dq.pollFirst();
            maxDepth = Math.max(maxDepth,(int)poll[1]);
            TreeNode pollNode = (TreeNode) poll[0];

            if(pollNode.left != null){
                dq.addLast(new Object[]{pollNode.left,(int)poll[1] + 1});
            }

            if(pollNode.right != null){
                dq.addLast(new Object[]{pollNode.right,(int)poll[1] + 1});
            }
            
        }
        return maxDepth;
    }
}

재귀 사용 코드

class Solution {
    int maximum(TreeNode root){
        if(root==null) return 0;
        int left=maximum(root.left);
        int right=maximum(root.right);
        return (Math.max(left,right)+1);
    }
    public int maxDepth(TreeNode root) {
        return maximum(root);
    }
}

0개의 댓글