二叉树的最小深度(C/C++)

用递归去实现:

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,得到当前父节点最小的深度。

猜你喜欢

转载自blog.csdn.net/Doutd_y/article/details/81908269