• 二叉树的最大深度(C++解法)


    题目

    给定一个二叉树 root ,返回其最大深度。

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

    示例 1:

    输入:root = [3,9,20,null,null,15,7]
    输出:3
    

    示例 2:

    输入:root = [1,null,2]
    输出:2

    C++代码

    1. #include
    2. using namespace std;
    3. //创建二叉树结构体
    4. struct TreeNode {
    5. int val;
    6. TreeNode* left;
    7. TreeNode* right;
    8. TreeNode() : val(0), left(nullptr), right(nullptr) {}
    9. TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
    10. TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
    11. };
    12. /*
    13. * 二叉树的最大深度问题
    14. * 二叉树的最大深度:max(l+r)+1,l为左子树的最大深度,r为右子树的最大深度
    15. * 运用迭代求出左右子树的最大深度并求最后的解
    16. */
    17. int maxDepth(TreeNode* root) {
    18. if (root == nullptr) return 0;
    19. return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    20. }
    21. int main() {
    22. TreeNode* t1 = new TreeNode(3);
    23. TreeNode* t2 = new TreeNode(9);
    24. TreeNode* t3 = new TreeNode(20);
    25. TreeNode* t4 = new TreeNode(15);
    26. TreeNode* t5 = new TreeNode(7);
    27. t1->left = t2;
    28. t1->right = t3;
    29. t2->left = nullptr;
    30. t2->right = nullptr;
    31. t3->left = t4;
    32. t3->right = t5;
    33. t4->left = nullptr;
    34. t4->right = nullptr;
    35. t5->left = nullptr;
    36. t5->right = nullptr;
    37. TreeNode* root = t1;
    38. int ans = maxDepth(root);
    39. cout << ans << endl;
    40. delete t1, t2, t3, t4, t5;
    41. return 0;
    42. }

    分析

    二叉树的最大深度问题,我们知道二叉树的最大深度:max(l+r)+1,l 为左子树的最大深度,r 为右子树的最大深度,那么可以运用迭代求出左右子树的最大深度并求最后的解。

    问题

    第一次写二叉树,二叉树的定义、初始化和链表相似。

  • 相关阅读:
    【物联网】windows环境 配置mqtt服务器
    springboot 集成redis
    Web前端入门(十三)CSS复合选择器
    PMP认证需具备哪些条件啊?费用多少啊?
    Django(20):信号机制
    Vue中如何为id绑定内联计算属性
    Vue中的懒加载是什么,如何实现懒加载?
    SpringBoot 使用异步方法
    Git与Repo:开源开发的得力工具组合
    docker之dockerFile
  • 原文地址:https://blog.csdn.net/m0_62275194/article/details/134254690