龙空技术网

LeetCode刷题笔记|104:二叉树的最大深度

可爱小男孩76 45

前言:

当前看官们对“求二叉树深度代码”大致比较重视,姐妹们都想要分析一些“求二叉树深度代码”的相关知识。那么小编同时在网摘上网罗了一些有关“求二叉树深度代码””的相关文章,希望我们能喜欢,看官们一起来了解一下吧!

题目描述

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例

输入:

    3   / \  9  20    /  \   15   7

输出:

3
写在前面

就这就这??[看]

本文答案参考自 LeetCode 官方题解。

解法1:深度优先遍历

先使 dfs “向下”遍历,当遇到叶子节点时,返回0.

然后函数层层“上升”,返回其 左子树 和 右子树 的层数 的最大值 再加1

(建议直接看代码[捂脸])

代码

int maxDepth(TreeNode* node) {	if (node == nullptr) return 0;  return max(maxDepth(node->left), maxDepth(node->right)) + 1;}作者:LeetCode-Solution链接:来源:力扣(LeetCode)

你看代码多简单啊~ (*^▽^*)

解法2:广度优先遍历

就像正常人([看])一样,一层一层地数出来。

在进行广度优先遍历时也顺便记录一下层数。

代码

int maxDepth(TreeNode* root) {  Queue<TreeNode*> q;  q.push(root);  int ans = 0;  while (!q.empty()) {      int size = q.size();      while (size > 0) {          TreeNode* node = q.front();q.pop();          if (node->left) q.push(node->left);          if (node->right) q.push(node->right);          size -= 1;      }      ans += 1;  }   return ans;}作者:LeetCode-Solution链接:来源:力扣(LeetCode)

标签: #求二叉树深度代码