#include <iostream>
using namespace std;
typedef struct treeNode_t
{
struct treeNode_t *plchild;
struct treeNode_t *prchild;
treeNode_t(struct treeNode_t *pl, struct treeNode_t *pr)
{
plchild = pl;
prchild = pr;
}
}treeNode;
int minDepth(treeNode *root)
{
if (root == nullptr)
{
return 0;
}
if (root->plchild == nullptr && root->prchild == nullptr)
{
return 1;
}
int ret1 = 0x7fffffff;
int ret2 = 0x7fffffff;
if (root->plchild)
{
ret1 = minDepth(root->plchild);
}
if (root->prchild)
{
ret2 = minDepth(root->prchild);
}
return ret1 < ret2 ? ret1 + 1 : ret2 + 1;
}
int main() {
treeNode *node11 = new treeNode(nullptr, nullptr);
treeNode *node10 = new treeNode(nullptr, nullptr);
treeNode *node9 = new treeNode(nullptr, nullptr);
treeNode *node8 = new treeNode(nullptr, nullptr);
treeNode *node7 = new treeNode(nullptr, node11);
treeNode *node6 = new treeNode(node9, node10);
treeNode *node5 = new treeNode(node8, nullptr);
treeNode *node4 = new treeNode(nullptr, nullptr);
treeNode *node3 = new treeNode(node6, node7);
treeNode *node2 = new treeNode(node4, node5);
treeNode *node1 = new treeNode(node2, node3);
cout << minDepth(node1) << endl;
return 0;
}