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