leetcode【104】Maximum Depth of Binary Tree
程序员文章站
2024-02-12 22:46:46
...
问题描述:
Share
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its depth = 3.
源码:
先还是看看递归的做法吧,我自己写的非常复杂,太菜了。
/**
* 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 depth(TreeNode* node, int cur){
if(!node->left && !node->right) return cur;
int tmp = 0;
if(node->left) tmp = depth(node->left, cur+1);
if(node->right) tmp = max(tmp, depth(node->right, cur+1));
return tmp;
}
int maxDepth(TreeNode* root) {
if(!root) return 0;
return depth(root, 1);
}
};
看看Discuss区大佬的做法,简单明了。
class Solution {
public:
int maxDepth(TreeNode* root) {
return root == NULL ? 0 : max(maxDepth(root->left), maxDepth(root->right) ) + 1;
}
};
非递归方法,效率高了很多。时间87%,空间100%
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
/**
* 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 maxDepth(TreeNode* root) {
if(root == NULL)
return 0;
queue<TreeNode *> q;
q.push(root);
int depth=0;// 记录深度
while(!q.empty())
{
int len = q.size();//记录树当前层的结点个数
++depth;
while(len)
{
TreeNode * p=q.front();
if(p->left)
q.push(p->left);
if(p->right)
q.push(p->right);
q.pop();
--len;
}
}
return depth;
}
};
上一篇: 微信小程序使用视频播放器video组件
推荐阅读
-
leetcode【104】Maximum Depth of Binary Tree
-
LeetCode------Maximum Depth of Binary Tree
-
Leetcode 104: Maximum Depth of Binary Tree
-
leetcode Maximum Width of Binary Tree
-
LeetCode-297.Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)
-
【LeetCode】104. Maximum Depth of Binary Tree 二叉树的深度 DFS BFS 递归方式 迭代方式 JAVA
-
leetcode笔记:Invert Binary Tree
-
minimum-depth-of-binary-tree
-
【leetcode】-700. Search in a Binary Search Tree 查找二叉搜索树
-
Leetcode——108. Convert Sorted Array to Binary Search Tree