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;
    }
  • 相关阅读:
    docker容器里面执行top报“TERM environment variable not set.”
    docker安装ubuntu以后无ifconfig命令解决办法
    免sudo使用docker
    centos6下安装docker
    Hadoop Aggregate Resource Allocation解释
    [] 与[[]]的区别
    awk如何传递外部变量?
    基于PaddlePaddle的语义匹配模型DAM,让聊天机器人实现完美回复 |
    作为一名程序员,在面试中如何展现你Python的coding能力?
    入门机器学习:代码+预训练模型,赶快练练吧!
  • 原文地址:https://www.cnblogs.com/dplearning/p/3910579.html
Copyright © 2011-2022 走看看