• 【编程题目】二元树的深度


    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;
    }
  • 相关阅读:
    js插件zClip实现复制到剪贴板功能
    基于jQuery的滚动条插件-jquery.jscrollbar
    jquery mobile 开启开关
    html5 中audio 在safari上不支持自动播放
    开发人员常用的10个Sublime Text插件
    通过padding-bottom或者padding-top实现等比缩放响应式图片
    get请求下载json文件正常,但是不弹出status
    JSON错误
    对象与类
    数组(二)
  • 原文地址:https://www.cnblogs.com/dplearning/p/3910579.html
Copyright © 2020-2023  润新知