zoukankan      html  css  js  c++  java
  • 剑指 Offer 55

    输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

    例如:

    给定二叉树 [3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7
    返回它的最大深度 3 。

    思路:

    建立一个队列去保存二叉树中每个元素的值

    代码:

    typedef struct
    {
        struct TreeNode *array[10000];
        int index;
        int outdex;
    }
    void startqueue(struct TreeNode *t,Queue *queue)
    {
         queue->array[0]=t;
         queue->index=1;
         queue->outdex=0;
    }
    //bfs求深度函数
    int bfstreehign(Queue *queue)
    {
         int len,i,count=0;
         len=1;
         struct TreeNode *elem;
         while(len)
        {
         for(i=0;i<len;i++)
         {
           elem=queue->array[queue->outdex];
           if(elem->left!=NULL)     
            queue->array[queue->index++]=elem->left;
           if(elem->right!=NULL)
           queue->array[queue->index++]=elem->right;
           queue->outdex++;
         }
         len=queue->index-queue->outdex;
         count++;
       }
       return count;
    }
    int maxDepth(struct TreeNode* root)
    {
       Queue queue;
       int count=0;
       if(root==NULL)
         return 0;
       startqueue(root,&queue);
       count=bfstreehign(&queue);
       return count;
    }
    

      求二叉树的深度步骤:先初始化队列,然后对队列中的元素进行遍历,先出队的那个元素代表它为当前层的最后一个元素,深度+1

  • 相关阅读:
    编写更好的CSS
    EntityFramework中支持BulkInsert扩展
    NoSql数据库使用
    jsoneditor显示Json data
    资源
    了解你的被测系统(why?)
    SQL SERVER开窗函数
    oracle中的exists 和not exists 用法详解(转)
    visualvm监控jvm及远程jvm监控方法(转)
    爆:中国互联网的那些黑色产业链(转)
  • 原文地址:https://www.cnblogs.com/redzzy/p/13844617.html
Copyright © 2011-2022 走看看