バイナリツリーの最小深度(C + +バイナリツリーの最小深度)

問題解決のアイデア:

(1)再帰を使用する

(2)ノードの最小の高さは、左右のサブツリーの最小の高さ+ 1であることに注意してください。

(3)サブツリーの1つの高さが0の場合、他のサブツリーの高さ+ 1がノードの最小の高さになることに注意してください。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int minDepth(TreeNode* root) {
        if (root) return dfs(root);
        else return 0;
    }

private:
    int dfs(TreeNode* node) {
        int l = node->left ? dfs(node->left) : 0;
        int r = node->right ? dfs(node->right) : 0;
        if (l==0) return r+1;
        if (r==0) return l+1;
        else return min(l,r)+1;
    }
};

 

303元の記事を公開しました 賞賛されました277 420,000再生回数

おすすめ

転載: blog.csdn.net/coolsunxu/article/details/105531658