zoukankan      html  css  js  c++  java
  • [华为机试练习题]42.求二叉树的深度和宽度

    题目

    题目标题:

    求二叉树的宽度和深度
    给定一个二叉树,获取该二叉树的宽度和深度。   
    
    比如输入
       a
      / 
     b   c
    /  / 
    d e f g
    
    返回3.
    

    接口说明
    原型:

         int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
    

    输入參数:

         head   须要获取深度的二叉树头结点
    

    输出參数(指针指向的内存区域保证有效):

         pulWidth   宽度
         pulHeight  高度
    

    返回值:

         0          成功
         1          失败或其它异常
    

    练习阶段:

    中级 
    

    代码

    /*---------------------------------------
    *   日期:2015-07-03
    *   作者:SJF0115
    *   题目:求二叉树的深度和宽度
    *   来源:华为机试练习题
    -----------------------------------------*/
    #include <iostream>
    #include "OJ.h"
    #include <string>
    #include <queue>
    using namespace std;
    
    /*
    Description  
             给定一个二叉树,获取该二叉树的宽度深度。

    Prototype int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight) Input Param head 须要获取深度的二叉树头结点 Output Param pulWidth 宽度 pulHeight 高度 Return Value 0 成功 1 失败或其它异常 */ int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight){ if(&head == NULL || pulWidth == NULL || pulHeight == NULL){ return 1; }//if int maxWidth = 0; int curWidth = 0; int height = 0; BiNode* root = &head; queue<BiNode*> curQueue; queue<BiNode*> nextQueue; curQueue.push(root); // 层次遍历 while(!curQueue.empty()){ ++height; curWidth = 0; while(!curQueue.empty()){ ++curWidth; BiNode* node = curQueue.front(); curQueue.pop(); // 左子结点不为空 if(node->left != NULL){ nextQueue.push(node->left); }//if // 右子节点不为空 if(node->right != NULL){ nextQueue.push(node->right); }//if }//while // 更新最大宽度 if(curWidth > maxWidth){ maxWidth = curWidth; }//if swap(curQueue,nextQueue); }//while *pulWidth = maxWidth; *pulHeight = height; return 0; }

  • 相关阅读:
    Attention in Super-Resolution[阅读笔记][RCAN][SAN][HAN]
    docker安装oracle11g
    timeSetEvent
    有意思的中文转拼音用来区分26个小类用于缩小列表大小减少循环
    jsp中的out.println爆红
    记一次Jdbc的配置文件无法加载
    Java静态块
    解决Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA报错
    html5,图文混排垂直居中
    Sql server语句执行时间查看
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7099435.html
Copyright © 2011-2022 走看看