给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
- #include
- using namespace std;
-
- //创建二叉树结构体
- struct TreeNode {
- int val;
- TreeNode* left;
- TreeNode* right;
- TreeNode() : val(0), left(nullptr), right(nullptr) {}
- TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
- TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
- };
-
- /*
- * 二叉树的最大深度问题
- * 二叉树的最大深度:max(l+r)+1,l为左子树的最大深度,r为右子树的最大深度
- * 运用迭代求出左右子树的最大深度并求最后的解
- */
- int maxDepth(TreeNode* root) {
- if (root == nullptr) return 0;
- return max(maxDepth(root->left), maxDepth(root->right)) + 1;
- }
-
- int main() {
- TreeNode* t1 = new TreeNode(3);
- TreeNode* t2 = new TreeNode(9);
- TreeNode* t3 = new TreeNode(20);
- TreeNode* t4 = new TreeNode(15);
- TreeNode* t5 = new TreeNode(7);
-
- t1->left = t2;
- t1->right = t3;
- t2->left = nullptr;
- t2->right = nullptr;
- t3->left = t4;
- t3->right = t5;
- t4->left = nullptr;
- t4->right = nullptr;
- t5->left = nullptr;
- t5->right = nullptr;
-
- TreeNode* root = t1;
- int ans = maxDepth(root);
- cout << ans << endl;
-
- delete t1, t2, t3, t4, t5;
- return 0;
- }
二叉树的最大深度问题,我们知道二叉树的最大深度:max(l+r)+1,l 为左子树的最大深度,r 为右子树的最大深度,那么可以运用迭代求出左右子树的最大深度并求最后的解。
第一次写二叉树,二叉树的定义、初始化和链表相似。