「Leetcode」104。二分木の最大深さ

問題解決言語:C言語
思考の一般的なフレームワークは、二分木のルートノードの左右のサブツリーの深さを計算し、比較することです。大きい方が二分木の最大の深さです( 1とルートノードレベルを追加します)。
ここに画像の説明を挿入します
私の最初の解決策を見てみましょう


int maxDepth(struct TreeNode* root)
{
    if(root==NULL)
    {
        return 0;
    }
    return maxDepth(root->left)>maxDepth(root->right)?maxDepth(root->left)+1:maxDepth(root->right)+1;
}

表面的には大きな問題はないように見えますが、実際には大きな問題があります。このように送信結果を書き込むと、コードの最後の行で実際に再度カウントされるため、制限時間を超えています。

最適化されたコードは次のとおりです


int maxDepth(struct TreeNode* root)
{
    if(root==NULL)
    {
        return 0;
    }
    int leftDepth=maxDepth(root->left);
    int rightDepth=maxDepth(root->right);
	return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}

ユーザーの99.71%を破る

おすすめ

転載: blog.csdn.net/NanlinW/article/details/96863841