首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode 111:二叉樹最小深度(遞歸優化邏輯)

     編輯:關於C++

題目描述

給定二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數。

關鍵陷阱

若節點只有一個子節點,最小深度不是 1,而是需沿著非空子節點繼續遞歸。即:若左子樹為空,最小深度為右子樹最小深度 + 1,反之亦然。只有左右子樹都非空時才取兩者最小值 + 1。

最終遞歸代碼 (C++)

class Solution {
public:
    int minDepth(TreeNode* root) {
        if (!root) return 0;
        if (!root->left && !root->right) return 1;
        if (!root->left) return 1 + minDepth(root->right);
        if (!root->right) return 1 + minDepth(root->left);
        return 1 + min(minDepth(root->left), minDepth(root->right));
    }
};

複雜度

  • 時間:O(n),最壞訪問所有節點。
  • 空間:O(h),遞歸棧深度,h 為樹高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved