刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

3.二叉树的深度
给定一棵二叉树,求该二叉树的深度
二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度
时间限制:1000
内存限制:65535
输入
第一行是一个整数n,表示二叉树的结点个数。二叉树结点编号从1到n,根结点为1,n <= 10 接下来有n行,依次对应二叉树的n个节点。 每行有两个整数,分别表示该节点的左儿子和右儿子的节点编号。如果第一个(第二个)数为-1则表示没有左(右)儿子
输出
输出一个整型数,表示树的深度
样例输入
```
3
2 3
-1 -1
-1 -1
```
样例输出
```
2
```

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```#include#includeusing namespace std;struct TreeNode int val;int left;int right;TreeNode(int x) : val(x), left(-1), right(-1) {};int maxDepth(TreeNode* root) if (root == nullptr) {return 0;}int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return max(leftDepth, rightDepth) + 1;int main() int n;cin >> n;TreeNode* nodes[n + 1];for (int i = 1; i <= n; i++) {int left, right;cin >> left >> right;nodes[i] = new TreeNode(i);nodes[i]->left = left;nodes[i]->right = right;}int depth = maxDepth(nodes[1]);cout << depth << endl;return 0;```

解析:

【喵呜刷题小喵解析】:
首先,需要理解二叉树的深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度。

根据题目要求,我们需要先构建二叉树,然后计算二叉树的深度。

构建二叉树时,我们可以使用结构体TreeNode来存储每个节点的值以及左右子节点的编号。然后,根据输入,我们可以为每个节点分配内存,并设置其左右子节点的编号。

计算二叉树的深度时,我们可以使用递归的方法。对于每个节点,我们分别计算其左子树和右子树的深度,然后取两者中的较大值,再加上当前节点,即为该节点的深度。

最后,我们只需要计算根节点的深度,即为整棵二叉树的深度。

在代码实现中,我们使用了C++语言,首先定义了TreeNode结构体,然后实现了maxDepth函数来计算二叉树的深度。在main函数中,我们根据输入构建了二叉树,并计算了二叉树的深度,最后输出结果。
创作类型:
原创

本文链接:3.二叉树的深度给定一棵二叉树,求该二叉树的深度二叉树深度定义:从根结点到叶结点依次经过的结点(含根

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share