zoukankan      html  css  js  c++  java
  • 洛谷 P4913 【深基16.例3】二叉树深度

    P4913 【深基16.例3】二叉树深度

    题目描述

    给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。

    最多有 10^6106 个结点。

    输入格式

    输出格式

    输入输出样例

    **输入 **

    7
    2 7
    3 6
    4 5
    0 0
    0 0
    0 0
    0 0
    

    **输出 **

    4
    

    这道题考察了二叉树深度,我们进行构造一个struct节点,然后进行一次dfs,把层级传入即可得出最终的层数。

    #include <iostream>
    #include <cstdio>
    using namespace std;
    struct node {
        int val, left, right;
    }n[1001000];
    int N, root = 0, maxLevel = 0;
    bool isroot[1001000] = {0};
    void dfs(int root, int level) {
        maxLevel = max(maxLevel, level);
        if(n[root].left != 0) dfs(n[root].left, level + 1); 
        if(n[root].right != 0) dfs(n[root].right, level + 1); 
    }
    int main() {
        scanf("%d", &N);
        for(int i = 1; i <= N; i++) {
            scanf("%d%d", &n[i].left, &n[i].right);
            isroot[n[i].left] = isroot[n[i].right] = 1; 
        }
        while(isroot[root]) root++;
        dfs(root, 1);
        printf("%d", maxLevel);
        return 0;
    }
    
  • 相关阅读:
    linux常用命令中篇
    htaccess正则规则学习笔记整理
    个性签名
    求函数的单调区间
    函数的奇偶性
    函数的对称性
    函数的周期性
    复合函数
    赋值法
    高中数学中高频变形技巧收录
  • 原文地址:https://www.cnblogs.com/littlepage/p/13051632.html
Copyright © 2011-2022 走看看