• 微软面试题:写程序找出二叉树的深度


    一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。

    int DepthOfTree(BiTreeNode* root)
    {
     if(NULL == root)
     {
      return 0;
     }
     return max(DepthOfTree(root->leftChild), DepthOfTree(root->rightChild))+1;
    }

    也可以采用下面的思路:

    类似于递归的先序遍历,层层向下计算,每向下计算一层,深度
                     就加1,CalTreeDepth(PNode pn, unsigned n)中的第二个
                     参数表示上一层的深度,所以程序在调用时, 假设proot为整个
                     树的根节点,则其深度depth为:
                                       unsigned depth = CalTreeDepth(proot, 0);
    */
    代码如下:

    unsigned CalTreeDepth(PNode pn, unsigned n)
    {
            static unsigned d = 0;          //使用static变量d来记录出现的最大深度
            if(pn)
            {
                if(n+1 > d)
                    d = n+1;
                CalTreeDepth(pn->left, n+1);
                CalTreeDepth(pn->right, n+1);
            }
            return d;
    }
  • 相关阅读:
    Spring-Boot:多种配置注入方式
    Spring-Boot:Profile简单示例
    Spring-Boot:拦截器注解范例
    Docker:镜像的迁移
    YARN的内存和CPU配置
    Spark On YARN内存分配
    Spark配置参数
    linux_密钥
    分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
    PythonDay01
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2414388.html
Copyright © 2020-2023  润新知