Leetcode二叉树的最小深度
Posted gdut-gordon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode二叉树的最小深度相关的知识,希望对你有一定的参考价值。
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
采用基于递归的深度搜索算法。
深度搜索:首先找出所有从根节点到叶子节点的路径,再比较最小深度。
递归:需要定义递归函数。
/** * 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 == NULL) return 0; int result = 0, left = 0, right = 0; left = minDepth(root->left); right = minDepth(root->right); if (left == 0 || right == 0) result = 1 + max(left, right); else result = 1 + min(left, right); return result; ;
复杂度分析:
时间复杂度:节点个数为N。每个节点访问一次,O(n).
空间复杂度:最坏情况下,N个节点构成非平衡树,每个节点只有1个孩子,这时候递归调用N次(树的高度),此时栈的空间开销为O(n). 最理想情况下,N个节点构成完全平衡树,树的高度为logN,栈的空间开销为O(logN).
以上是关于Leetcode二叉树的最小深度的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Java刷题笔记—111. 二叉树的最小深度