zoukankan      html  css  js  c++  java
  • 微软面试题:写程序找出二叉树的深度

    一个树的深度等于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;
    }
  • 相关阅读:
    CSS浏览器兼容解决总结
    Access的数据操作类(带异常处理)
    网页消息类
    生成验证码(纯中文)
    C#连接各种数据库(持续更新中)
    asp.net中实现文件批量上传!你会了吗?
    http 错误编号大全(转)
    SQL SERVER数据操作类
    web.config加密和解密
    C#中操作CMD命令行窗口
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2414388.html
Copyright © 2011-2022 走看看