用递归去实现:
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode (int x): val(x), left(NULL), right(NULL) {}
};
int func(TreeNode *root)
{
if(root == NULL)
return 0;
int left = func(root->left);
int right = func(root->right);
return (left == 0 || right == 0) ? (left+right+1) : min(left, right)+1;
}
当左结点为NULL时,返回0,再去检查右结点,若右结点为NULL,返回0。则从该父节点回推到根结点,每回推一步加1。
若父节点的左右子树具有一定的深度,则取min(left, right)+1,得到当前父节点最小的深度。