LeetCode 노트-104 두 갈래 나무의 최대 깊이

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

최대 깊이 3을 반환합니다.
사고방식: 노드 루트에 대해root=null시 나무의 최대 깊이 d(root)=0;
루트가 비어 있지 않으면 d(root)=1+max[maxDepth(root.left),maxDepth(root.right)]
루트가 비어 있지 않을 때, 나무의 깊이에 1을 추가한 다음, 좌우 트리가 밀어내는 최대치를 추가합니다.전에 생각했던 건 둘의 합을...그 다음에 추이를 쓰는 절차는 추이의 공식과 추이가 끝나는 조건을 먼저 명확하게 생각해야 한다.
내가 다시 할 때도 가장 멍청한 귀착의 사고방식을 생각했을 뿐, 아래의 코드와 차이가 많지 않았다...
코드:
/**  * Definition for a binary tree node.  * public class TreeNode {  *     int val;  *     TreeNode left;  *     TreeNode right;  *     TreeNode(int x) { val = x; }  * }  */class Solution {     public int maxDepth(TreeNode root) {      if(root==null) return 0;         else if(root.left==null&&root.right==null)         {return 1;}         else         {             int left=maxDepth(root.left);             int right=maxDepth(root.right);             return 1+(left>right?left:right);         }     } }
 
가장 빠른 실행 사례:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
	    // return 0 for null node
        if (root == null)
		    return 0;
	    int left_depth = maxDepth(root.left);
	    int right_depth = maxDepth(root.right);
        // return depth of the subtree rooted at root
	    return Math.max(left_depth, right_depth) + 1;	
    }
}

좋은 웹페이지 즐겨찾기