[LeetCode-111] Minimum Depth of Binary Tree(이차수 최소 깊이)

1103 단어 LeetCode
Given a binary tree, find its Minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
이 문제는 바로 두 갈래 나무의 깊이를 구하는 것이다. 귀속 해법: (1) 두 갈래 나무가 비어 있으면 두 갈래 나무의 깊이가 0(2) 두 갈래 나무가 비어 있지 않으면 두 갈래 나무의 깊이=min(왼쪽 나무 깊이, 오른쪽 나무 깊이)+1
(3) 주의해야 할 것은 비스듬한 두 갈래 나무의 경우 노드의 왼쪽 트리 깊이가 0이거나 노드의 오른쪽 트리 깊이가 0이다.
DFS 깊이를 우선적으로 사용해서 우리는 잎 노드만 사용한다.
/**
 * Definition for a binary tree node.
  */
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
};

int minDepth(TreeNode *root) 
{
   // Start typing your C/C++ solution below
   // DO NOT write int main() function
   if (root == NULL)
	   return 0;
	   
   if (root->left == NULL && root->right == NULL)
	   return 1;
	   
   int leftDepth = minDepth(root->left);
   int rightDepth = minDepth(root->right);
   
   if (leftDepth == 0)
	   return rightDepth + 1;
   else if (rightDepth == 0)
	   return leftDepth + 1;
   else
	   return leftDepth < rightDepth ? (leftDepth +1 ) : (rightDepth +1); 
}

좋은 웹페이지 즐겨찾기