首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode: Maximum Depth of Binary Tree

LeetCode: Maximum Depth of Binary Tree

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-25 14:55:19
4190
发布2019-01-25 14:55:19
举报

题目如下:

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.

即求二叉树的(最大)深度。

有两种思路:一是使用递归,二是使用二叉树层序遍历。

递归算法:用递归的函数,返回左子树或者右子树中大的深度加1,作为自己的深度。

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

二叉树的层序遍历使用队列将节点依次存储,每一个出列一个节点,当一层节点完全出列的时候,深度加1。

int maxDepth(TreeNode *root)
{
	if (root == NULL) return 0;
	queue<TreeNode *>  btQueue;//使用队列进行层序遍历
	btQueue.push(root);
	int count = 1;//记录当前层的节点个数
	int depth = 0;//记录当前遍历的深度
	while (!btQueue.empty())
	{
		TreeNode *currentNode = btQueue.front();
		btQueue.pop();//每次循环出队一个节点
		count--;

		if (currentNode->left) btQueue.push(currentNode->left);
		if (currentNode->right) btQueue.push(currentNode->right);

		if (count == 0)
		{
			//每当遍历完上一次节点的时候,层数depth++,count修改为现在队列中的元素个数,即下层的节点个数
			depth++;
			count = btQueue.size();
		}
	}
	return depth;
}

在Leetcode上进行提交,递归算法的运行时间为22ms,非递归的层序遍历算法为14ms,递归算法虽然代码简洁,思路清晰,但是在一定程度上消耗比较大。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年01月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档