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;
    }
    
  • 相关阅读:
    RDLC报表开发技巧备忘
    C#3.0"扩展方法"简记
    将activity转化成view
    取消logcat输出
    低栏的项目切换
    android edittext 限制文本框输入的长度和提示信息
    android如何调用dotnet编写的webservice
    iphone 式退出
    几种tabhost的总结(1)
    切换浏览示意图
  • 原文地址:https://www.cnblogs.com/littlepage/p/13051632.html
Copyright © 2011-2022 走看看