该类问题属于树的遍历问题
题目
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.
#include <stdio.h>
// Definition for binary tree
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
int minDepth(TreeNode *root) {
if(!root){
return 0;
}
int k = GetLength(root, 0);
return k;
}
int GetLength(TreeNode *p, int curLen){
int minLeft = -1;
int minRight = -1;
if(p->left){
minLeft = GetLength(p->left, curLen + 1);
}
if(p->right){
minRight = GetLength(p->right, curLen + 1);
}
//叶子节点
if(minLeft == -1 && minRight == -1){
return curLen + 1;
}
//左边没有节点
if(minLeft == -1){
return minRight;
}
//右边没有节点
if(minRight == -1){
return minLeft;
}
//两边均有节点,则返回叶子层数量小的
if(minLeft > minRight){
return minRight;
}
return minLeft;
}
};
int main(){
return 0;
}
网友评论