Leecode104_maxDepth

Leecode 104
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。

方法一:
深度优先法,通过深度优先搜寻。从根节点开始,返回左侧和右侧的深度,然后返回最大值,由此递归,直到到达叶子。从叶子节点到根节点深度回溯,直到到达根节点。

代码:

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

或者

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

或者

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

方法二:
广度优先法
代码:

int Leecode104_3_maxDepth(TreeNode* root) {
	 std::queue<TreeNode*> q;
	 int ans = 0;
	 if (root != nullptr) q.push(root);
	 while (!q.empty()) {
		 for (int i = q.size() - 1; i >= 0; --i) {
			 TreeNode* cur = q.front();
			 q.pop();
			 if (cur->left) q.push(cur->left);
			 if (cur->right) q.push(cur->right);
		 }
		 ++ans;
	 }
	 return ans;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值