zoukankan      html  css  js  c++  java
  • 【编程题目】二元树的深度

    52.二元树的深度(树)。
    题目:输入一棵二元树的根结点,求该树的深度。
    从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为
    树的深度。
    例如:输入二元树:
    10
    /
    6 14
    / /
    4 12 16
    输出该树的深度 3。
    二元树的结点定义如下:
    struct SBinaryTreeNode // a node of the binary tree
    {
    int m_nValue; // value of node
    SBinaryTreeNode *m_pLeft; // left child of node
    SBinaryTreeNode *m_pRight; // right child of node
    };

    用递归非常容易,最大深度是左子树 和 右子树 中深度最大的加 1

    /*
    52.二元树的深度(树)。
    题目:输入一棵二元树的根结点,求该树的深度。
    从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为
    树的深度。
    例如:输入二元树: 
    10
    /    
    6       14
    /    /       
    4    12     16
    输出该树的深度 3。
    二元树的结点定义如下:
    struct SBinaryTreeNode // a node of the binary tree
    {
    int  m_nValue; // value of node
    SBinaryTreeNode *m_pLeft;  // left child of node
    SBinaryTreeNode *m_pRight;  // right child of node
    };
    */
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct SBinaryTreeNode // a node of the binary tree
    {
        int  m_nValue; // value of node
        SBinaryTreeNode *m_pLeft;  // left child of node
        SBinaryTreeNode *m_pRight;  // right child of node
    };
    
    int maxdeep(SBinaryTreeNode * T)
    {
        if (T == NULL)
        {
            return 0;
        }
        else
        {
            
            int leftdeep = maxdeep(T->m_pLeft);
            int rightdeep = maxdeep(T->m_pRight);
            return (leftdeep > rightdeep) ? leftdeep + 1 : rightdeep + 1; //最大深度是左子树 和 右子树 中深度最大的加 1
        }
    }
    
    void createTree(SBinaryTreeNode * &T)
    {
        int data;
        scanf("%d", &data);
        if (data != 0)
        {
            T = (SBinaryTreeNode *)malloc(sizeof(SBinaryTreeNode));
            T->m_nValue = data;
            T->m_pLeft = NULL;
            T->m_pRight = NULL;
            createTree(T->m_pLeft);
            createTree(T->m_pRight);
        }
    }
    
    int main()
    {
        SBinaryTreeNode * T = NULL;
        createTree(T);
        int deep = maxdeep(T);
        return 0;
    }
  • 相关阅读:
    爽肤水
    Python面向对象关系
    Linux多线程编程
    Python数据库工具类MySQLdb使用
    Python配置工具类ConfigParser使用
    采用RedisLive监控Redis服务——安装手册
    采用JavaMelody监控Tomcat服务——安装手册
    怎么做性能测试--响应时间
    robot framework测试驱动无法定位页面元素
    使用Loadrunner对IBM MQ进行性能测试
  • 原文地址:https://www.cnblogs.com/dplearning/p/3910579.html
Copyright © 2011-2022 走看看